Я хочу заставить www. префикс на моем сайте с помощью перенаправления .htaccess 301. Я сейчас пытаюсь:
RewriteCond %{HTTP_HOST} ^mysite.com [NC] RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]
Что обычно работает, но я использую Zend Framework, который заставляет перенаправлять все запросы обратно к http://www.mysite.com/index.php независимо от исходного запроса.
Например ...
http://mysite.com/blog, http://mysite.com/contact, http://mysite.com/blog/this-is-my-article,
Все будут перенаправлены на http://www.mysite.com/index.php
Однако, если я первоначально запрашиваю определенный файл, например ...
http://mysite.com/some-file.htm
Перенаправление работает правильно, перенаправление на http://www.mysite.com/some-file.htm
В первый раз не забудьте включить перезапись («RewriteEngine on»). Последняя строка важна, если вы используете Zend Framework.
RewriteEngine on RewriteCond %{HTTP_HOST} ^mysite.com [NC] RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301] RewriteRule !\.(pdf|php|js|ico|txt|gif|jpg|png|css|rss|zip|tar\.gz)$ index.php
Теперь URL ...
... перенаправить на http://www.mysite.com/some-file.htm, но использовать index.php
Не забывайте игнорировать субдомены при перенаправлении на www.
http://www.theblogaholic.com/2011/01/16/force-www-using-htaccess-except-for-subdomains/