2010-11-12 4 views
1

В .htaccess на Apache2, как вы перенаправляете все вариации капитализации имени хоста в каноническую версию нижнего регистра с помощью 301 перенаправления и сохраняете остальную часть пути целыми и невредимыми. Субдомены (или нет) должны делать то же самое.В .htaccess, как перенаправить версии с нижним регистром имени хоста

Кроме того, доступ через IP должен не перенаправление.

примеры:

  • http://Example.com/foo =>http://example.com/foo
  • http://A.example.com/foo =>http://a.example.com/foo
  • http://A.EXample.com/foo?bar =>http://a.example.com/foo?bar
  • http://208.67.222.222/foo =>http://208.67.222.222/foo

ответ

1
# Make sure hostname is lowercase only (or an IP address) 
RewriteCond %{HTTP_HOST} !^(.+\.)?example\.com$ 
RewriteCond %{HTTP_HOST} !^[\d\.]{7,15}$ 
RewriteRule ^(.*)$ ${lowercase:%{HTTP_HOST}}/$1 [R=301,L] 
+0

Помните, что каждая поисковая система, о которой стоит упомянуть, уже делает эту канонизацию для вас. Если у вас нет серьезных проблем с этим, это, как правило, не обязательно. –

0

Я искал и не смог найти решение в Интернете, которое охватывает любое количество доменов. Вариант использования для меня заключается в том, что я работаю на localhost, и поэтому первая строка (с example.com) не будет работать как на localhost, так и на моем домене, а также на любое другое имя, которое кто-то использует вместо localhost.

Чтобы добавить ответ @philfreo «ы, поэтому: (копирование строки, но изменения только первый)

# Make sure hostname is lowercase only (or an IP address) 
RewriteCond %{HTTP_HOST} !^(.+\.)?(.+)?$ 
RewriteCond %{HTTP_HOST} !^[\d\.]{7,15}$ 
RewriteRule ^(.*)$ ${lowercase:%{HTTP_HOST}}/$1 [R=301,L] 

Принадлежит к philfreo! С его ответом было много времени.

Paragon

Смежные вопросы