Ответ 1
Исправлено:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com$1 [R=301,L]
поскольку $1
по умолчанию содержит путь указателя /
Я применил следующее правило mod_rewrite
в Apache2
для перенаправления с не www на www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
У меня есть два вопроса:
1) Проблема с двойной косой чертой:
Любые советы, чтобы это исправить?
2) Хороша ли моя конфигурация для SEO?
Исправлено:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com$1 [R=301,L]
поскольку $1
по умолчанию содержит путь указателя /
RewriteRule ^\/?(.*)$ http://www.mydomain.com/$1 [R=301,L]
На самом деле, у вас всегда будет двойная косая черта из-за
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]
в сочетании с тем фактом, что REQUEST_URI (с которым вы совпадаете) обычно содержит начальный слеш. Вы можете попробовать RewriteRule ^(.*)$ http://mydomain.com$1
, а затем отправить неверный HTTP-запрос GET foo HTTP/1.0
и посмотреть, правильно ли с ним работает Apache.
Включение косой черты в ваш шаблон должно решить эту проблему:
RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]
Это потому, что корневой путь /
, и вы добавляете все, что попадаете в RewriteRule
(первый случай работает отлично, потому что он не соответствует условию, поэтому переписывание не выполняется).
Вы можете попробовать что-то вроде этого:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC]
# for the home page
RewriteRule ^/$ http://www.mydomain.com/ [R=301,L]
# for the rest of pages
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]