Пытаясь получить
www.example.com
идти прямо к
www.example.com/store
Я пробовал несколько битов кода, и ни один не работает.
Что я пробовал:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]
Что я делаю не так?
.htaccess
mod-rewrite
redirect
Вилли Ментцель
источник
источник
Я был удивлен, что никто не упомянул это:
По сути, он перенаправляет корневой и только корневой URL. Ответ возник по этой ссылке
источник
RedirectMatch 301 ^/$ /store/
Попробуй это:
Если вы хотите внешнее перенаправление (которое приводит к тому, что посещающий браузер показывает перенаправленный URL-адрес), установите
R
флаг также там:источник
www.example.com
как URI после перенаправления? Если нет, как бы это изменить?RewriteCond
и первоеRewriteRule
?/aboveSubDir
либо браузером, либо сервером.Вот что я использовал для перенаправления в подкаталог. Это делало это незаметно и до сих пор позволяет проходить запросы, которые соответствуют существующему файлу или чему-либо еще.
Измените site.com и subdir со своими значениями.
источник
Чтобы установить невидимое перенаправление из корневой папки в подпапку, вы можете использовать следующую RewriteRule в /root/.htaccess:
Приведенное выше правило внутренне перенаправляет браузер из:
в
И
в
пока браузер останется в корневой папке.
источник
Другой вариант, если вы хотите переписать URL и скрыть оригинальный URL:
При этом, если вы, например, наберете текст
http://www.example.com/product.php?id=4
, он будет прозрачно открывать файл,http://www.example.com/store/product.php?id=4
но не показывать пользователю полный URL-адрес.источник
QSA
(строка запроса append) в[L]
([L, QSA]
), если вы хотите перенести строки запроса в переписанный URL.Это казалось самым простым решением:
Я получал петли перенаправления с некоторыми другими решениями.
источник
Я не понимаю твой вопрос ...
Если вы хотите перенаправить каждый запрос в подпапку:
Если вы хотите перенаправить в подпапку с именем домена
источник
([^\.]+\.[^\.]+)$
чтобы зарезервировать домен в качестве имени подпапки.Большинство из приведенных выше решений являются правильными, но им не хватает прозрачности перенаправления.
В моем случае при посещении www.example.com я хотел получить перенаправление в подкаталог / магазин, но без обновления URL-адреса до www.example.com/store . (все, что я хочу, это получить код страницы из этого каталога). Если это ваш случай, решение ниже работает отлично.
источник: http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory
источник
RewriteRule ^(.*)$ http://otherpage.com/subfolder/$1 [L]
но он обновляет URLexample
иstore
.example.com
иotherpage.com
доменами. Когда я захожу,example.com
я хочу, чтобы содержимоеotherpage.com/subfolder
отображалось без обновления URLЯ обнаружил, что во избежание циклического перенаправления важно ограничить область перенаправления корневым каталогом. Я бы использовал:
источник
Для этого тоже можно использовать Redirect
Или Псевдоним для отображения
Изменить: mod_alias применимо только в httpd.conf.
Refrences
источник
Раньше я использовал следующий код, который работает правильно, чтобы перенаправить корневой URL каждого из моих доменов / поддоменов в их подкаталоги корреспонденции, которые названы точно так же, как и сам подкаталог, как показано ниже:
Однако, когда я хочу добавить другие подпрограммы или домены, это необходимо будет добавить в приведенный выше код. Было бы гораздо удобнее упростить его для работы как подстановочный знак (*), как показано ниже:
Таким образом, всякий раз, когда добавляются другие субдомены / домены, если имя субдомена имеет префикс sub (например, sub3.domain1.com, sub1.domain3.com и т. Д.), Код остается действительным.
источник
Я думаю, что основные проблемы с кодом, который вы разместили:
первая строка совпадает на хосте, начинающемся со строго sample.com, поэтому www.sample.com не совпадает.
вторая строка требует как минимум одного символа, за которым следует www.sample.com, который также не соответствует (почему вы избежали первого w?)
ни одно из включенных правил не перенаправляет на URL, который вы указали в своей цели (плюс, выборка написана с ошибкой как samle, но это не имеет значения).
Для справки вот код, который у вас есть:
источник
Немного погуглив, дает мне такие результаты:
Или попробуйте это:
Я не сделал много перенаправления в файле .htaccess, поэтому я не уверен, будет ли это работать.
источник
Существует два способа решения этой проблемы: 1. Создайте
.htaccess
файл в корневой папке, как показано ниже (просто замените example.com и my_dir соответствующими значениями):Используйте RedirectMatch только для перенаправления корневого URL «/» в другую папку или URL,
RedirectMatch ^ / $ http://www.example.com/my_dir
источник
попробуйте использовать ниже строки в htaccess
Примечание: вам может понадобиться проверить, как называется default.html.
default.html - это файл, который по умолчанию загружается в корневую папку.
RewriteEngine
Redirect /default.html http://example.com/store/
источник
вы просто добавляете этот код в ваш файл .htaccess
источник
Я отвечу на исходный вопрос не указав другой возможный синтаксис (среди прочих есть множество), а указав на то, с чем мне когда-то приходилось иметь дело, и мне потребовалось некоторое время, чтобы выяснить:
Существует вероятность того, что% {HTTP_HOST} заполнен неправильно или не заполнен вообще. Хотя я только видел, что это происходит только на одной машине на общем хосте, с некоторым патчем apache 2.2, но это возможно.
источник
Это попытается использовать subdir, если файл не существует в корне. Нужно было это, когда я переместил базовый .html-сайт, который, как ожидается, будет запущен на корневом уровне, и перенес его в подкаталог. Работает только в том случае, если все файлы плоские (нет возможности хитрости .htaccess в subdir). Полезно для связанных вещей, таких как файлы CSS и JS.
источник