Как перенаправить не-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]