Моя дилемма:
В .htaccess в корне моего сайта:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
В .htaccess в подкаталоге /foo
RewriteEngine On
RewriteRule ^page1\.html$ /foo/page2.html [R=301]
Во-первых, я стараюсь, чтобы все запросы включали начало www. Во втором я перенаправляю запросы для page1.html в подкаталоге foo на page2.html, также в этом подкаталоге.
В моем браузере, пытаясь посетить:
http://www.example.com/foo/page2.html ‹== работает, хорошо
http://www.example.com/foo/page1.html ‹== перенаправляет на http://www.example.com/foo/page2.html, хорошо
http://example.com/foo/page1.html ‹== перенаправляет на http://www.example.com/foo/page2.html, хорошо
http://example.com/foo/page2.html ‹== нет происходит перенаправление, плохо
==> Следует перенаправить на: http://**www.**example.com/foo/page2.html
В ходе экспериментов оказалось, что правила перенаправления в файле .htaccess в корне веб-сайта действуют только для запросов к страницам в этом подкаталоге, ЕСЛИ в этом подкаталоге нет файла .htaccess или он есть и указывает правило перезаписи, которое действует для этого конкретного запроса.
Может ли кто-нибудь увидеть, что я делаю неправильно? Как я могу получить правило перезаписи, которое прикрепляет www. in, если он отсутствует для активации для http://example.com/foo/page2.html ?
Спасибо, Хоп, сработало!
Для записи мне пришлось изменить правило перезаписи в файле в корне сайта на:
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [R=301,L]
Что просто отлично. Спасибо!