2009-07-21 6 views
14

У меня есть веб-сайт сказать http://www.example.com/ в корне моего сайта, я добавил файл .htaccess, чтобы перенаправить запрос на http://example.com/http://www.example.com/Как перенаправить не-www на www URL с помощью htaccess?

Недавно я создал новый раздел «Видео», так что URL видео является http://www.example.com/videos/ , В этой папке видео есть еще один файл htaccess, который выполняет переписывание видеозаписей. Когда я пытаюсь получить доступ к , то он не перенаправляет меня на http://www.example.com/videos/

Я думаю, что .htacces не наследует предыдущие правила из родительского каталога. Может кто-нибудь, пожалуйста, скажите мне, какое может быть правило, которое я могу добавить в файл .htaccess/videos/folder, чтобы любой запрос для http://example.com/videos/ был перенаправлен на адрес http://www.example.com/videos/.

ответ

9

Я думаю, что это может быть просто из-за того, что ваше существующее правило слишком строгое и из-за этого не запускается в вашем подкаталоге. Что-то, как это должно работать на веб-узле:

RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} ^example\.com$ 
RewriteRule ^(.*) http://www.example.com/$1 [R=301] 
+0

Где я должен помещать это правило, внутри .htaccess родительского корня или внутри .htaccess из папки видео? – Prashant

+0

Он должен работать в корневом каталоге. У меня есть что-то подобное в моем корневом .htaccess, и оно работает для подкаталогов. –

43

Это более общее решение, так как он может быть использован с любым доменным именем без указания определенного доменного имени в каждом .htaccess:

# Redirect non-www to www: 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

Противоположное также возможно (WWW к не-WWW):

# Redirect www to non-www 
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
+2

+1 для www-не-www-кода. – Debiprasad

+2

Я в Magento, и этот код перенаправляет //mywebsite.com/some/url на //www.mywebsite.com/index.php. Есть ли еще один шаг для сохранения URL-адреса? –

+1

Я думаю, что вы должны удалить одно правило «/» из правила около $ 1: RewriteRule^(. *) $ Http: //www.% {HTTP_HOST} $ 1 [R = 301, L] – webmaster

1

Это лучшие решения для перенаправления не-WWW с использованием Htaccess WWW URL. используя этот код в файле htaccess и проверьте URL-адрес.

Options +FollowSymlinks 
RewriteEngine on 
rewritecond %{http_host} ^mydomain.com [nc] 
rewriterule ^(.*)$ http://www.mydomain.com/$1 [r=301,nc] 
0

Я рекомендую всем придерживаться ниже метода будет только перенаправить основной домен только не какой-либо другой подкаталог или субдомен в хосте.

# 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] 

метод ниже будет перенаправлять все WWW URL для не-WWW включая ваши субдоменов, хотя вы не можете использовать www.subdirecty.yoursite.com он предложит вам ошибку с 500.

# Redirect www to non-www 
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
Смежные вопросы