Как перенаправить навсегда (301) через .htaccess? - PullRequest
0 голосов
/ 10 июля 2010

Эй, ребята!Не могли бы вы посоветовать мне, как изменить мой .htaccess, чтобы

http://example.com (non-www without trailing slash)
http://example.com/ (non-www with trailing slash)
http://www.example.com (www without trailing slash)

постоянно перенаправлялся (301) на

http://www.example.com/ (www with trailing slash)?

Кроме того, естьобщие правила, чтобы применить это «поведение» к подпапкам

http://example.com/subfolder
http://example.com/subfolder/
http://www.example.com/subfolder
=> http://www.example.com/subfolder/

и поддоменам (обратно здесь)

http://www.subdomain.example.com
http://www.subdomain.example.com/
http://subdomain.example.com
=> http://subdomain.example.com/

?Поскольку я совершенно новичок в этом, пожалуйста, будьте добры ... =)

Спасибо!Nel

Ответы [ 3 ]

2 голосов
/ 15 апреля 2011

Директива DirectorySlashes решает проблему с косой чертой.

Перенаправление с www на www не является:

RewriteCond %{HTTP_HOST} !^(www\.example\.com)?$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
1 голос
/ 10 июля 2010

Эти три правила должны делать все, что вы хотите:

RewriteEngine On

# Rewrite www.subdomain.example.com to subdomain.example.com
RewriteCond %{HTTP_HOST} ^www\.(.*)\.example\.com
RewriteRule (.*) http://%1.example.com/$1 [L,R=301]

# Rewrite example.com to www.example.com
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule (.*) http://www.example.com/$1 [L,R=301]

# Add trailing slash to all URIs without one
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301] 
0 голосов
/ 10 июля 2010

Я думаю, что это поможет:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301] 
...