#apache #.htaccess #mod-rewrite
#apache #.htaccess #мод-перезапись
Вопрос:
RewriteCond %{HTTP_HOST} !^www.. $ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Если я открою mysite.com затем это перенаправляет меня на www.mysite.com . Это нормально.
Но если я открою mysite.com/admin тогда это перенаправит меня на www.mysite.com вместо того , чтобы www.mysite.com/admin
Как я могу это исправить?
Ответ №1:
RewriteCond %{HTTP_HOST} !^www.. $ [NC]
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
Должно сработать. Используйте круглые скобки ()
для сопоставления с шаблоном, а затем $1
обратную ссылку, чтобы поместить ее обратно в новый URL.
Редактировать, подумав об этом, аналогичным образом вы могли бы просто изменить символ ^ (предложение match on) на a . в вашем исходном шаблоне, который должен делать то же самое, что и выше.
RewriteCond %{HTTP_HOST} !^www.. $ [NC]
RewriteRule . http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Комментарии:
1. Я подозреваю, что у вас есть какое-то другое правило, нарушающее его? У вас есть RewriteEngine где-нибудь над этими строками?
2. Кроме того, возможно, вы могли бы опубликовать весь свой код, если у вас все еще возникают проблемы. Я бы также рекомендовал htaccess.madewithlove.be для тестирования — это может помочь объяснить, где вы ошибаетесь. Этот тестер и живой сайт, на котором я его тестировал, работают с использованием двух приведенных выше правил.
3. пожалуйста, обновите свой вопрос со всем вашим файлом htacess, чтобы я мог помочь вам в дальнейшем
4. Просто попробовал еще раз, теперь, когда я вернулся к компьютеру — img694.imageshack.us/img694/9576/htaccess.jpg у меня все нормально работает.
5. Второе решение работает для меня. Первый не добавил каталог, если он присутствовал. Например:
http://example.com/somedirectory/foobar.html
перенаправил быhttp://www.example.com/foobar.html
на , которого не было