Не могу сделать 301 переадресацию домена

Привет, у меня есть приложение, которое использует opencart. Я хотел бы сделать переадресацию 301 на случай, если пользователь введет http://example.com. Для перенаправления на http://www.example.com (код состояния 301)

Вот мой контент .htaccess:

RewriteEngine On

\#OPENCART REWRITES START

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*) index.php

\#OPENCART REWRITES END

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Я получаю перенаправление 302 вместо 301.

Спасибо, Гранит


person Granit    schedule 19.10.2009    source источник


Ответы (2)


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

RewriteEngine On

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

#OPENCART REWRITES START
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php
#OPENCART REWRITES END
person Gumbo    schedule 20.10.2009

Вы пробовали делать:

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

Акцент на второй строке, поскольку она соответствует http://example.com, а не соответствует чему-либо, кроме www. .example.com, который сломается, если вы используете поддомены. Я не уверен, что это точно связано с вашей проблемой 301/302, но это может повлиять. Также попробуйте ваше Правило [R=301,NC,L].

person squeeks    schedule 19.10.2009
comment
Это ужасно странно! Интересно, есть ли другие правила перезаписи, вызывающие проблемы с ним. - person squeeks; 19.10.2009