Как перенаправить не-www в www URL с помощью htaccess?
У меня есть веб-сайт http://www.example.com/ в корневом каталоге моего сайта, я добавил файл .htaccess для перенаправления любого запроса http://example.com/ в http://www.example.com/
Недавно я создал новый раздел "Видео", поэтому URL-адрес видеороликов http://www.example.com/videos/. В этой папке видео есть еще один файл htaccess, который выполняет переписывание видеозаписей. Когда я пытаюсь получить доступ к http://example.com/videos/, то он не перенаправляет меня на < а3 >
Я думаю, что .htacces не наследует предыдущие правила из родительского каталога. Может кто-нибудь, пожалуйста, скажите мне, что может быть правилом, которое я могу добавить в файл .htaccess/videos/folder, чтобы любой запрос http://example.com/videos/ будет перенаправлен на http://www.example.com/videos/.
Ответы
Ответ 1
Это более общее решение, поскольку оно может использоваться с любым доменным именем без указания конкретного имени домена в каждом .htaccess:
# Redirect non-www to www:
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Возможно также и обратное (www to non-www):
# Redirect www to non-www
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Ответ 2
Я думаю, это может быть просто из-за того, что ваше существующее правило слишком строгое и из-за этого не запускается в вашем подкаталоге. Что-то вроде этого должно работать на сайте:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*) http://www.example.com/$1 [R=301]
Ответ 3
Это наилучшие решения для перенаправления не www-www URL с помощью htaccess. используя этот код в файле htaccess и проверьте URL-адрес.
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^mydomain.com [nc]
rewriterule ^(.*)$ http://www.mydomain.com/$1 [r=301,nc]
Ответ 4
Я рекомендую всем придерживаться метода ниже, он будет перенаправлять основной домен только не на любой другой подкаталог или поддомен на вашем хосте.
# Redirect non-www to www only for main domain
# recommended if you have any/some sub-domain(s)
RewriteEngine on
RewriteBase /
# Replace yoursite and .tld respectively
RewriteCond %{HTTP_HOST} ^yoursite\.tld$
# Replace yoursite.com
RewriteRule ^(.*) http://www.yoursite.com/$1 [R=301]
Используйте этот метод, если вы действительно уверены, и я надеюсь, что вы никогда не будете использовать поддомен с вашим сайтом, т.е. subdomain.yoursite.com или что-то еще. Тогда вы можете использовать метод ниже.
"Сказать снова убедитесь, что вы действительно хотите использовать этот метод"
# Redirect all non-www to www including subdomain(s)
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Этот метод перенаправляет все URL-адреса www-www, включая ваши поддомены, хотя вы не можете использовать www.subdirecty.yoursite.com, и он предложит вам ошибку с 500.
# Redirect www to non-www
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]