0

嗨,我有一个使用 opencart 的应用程序。如果用户键入http://example.com,我想进行 301 重新编辑。在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。

谢谢,格兰尼特

4

2 回答 2

1

您是否尝试过这样做:

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

于 2009-10-19T12:06:20.523 回答
0

Try it with a different order. Put your rules that cause an external redirect before those that only cause an internal redirect:

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
于 2009-10-20T14:08:17.647 回答