无法进行301域重定向

时间:2009-10-19 11:53:47

标签: .htaccess apache2 http-status-code-301

您好我有一个使用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。

感谢名单, 花岗岩

2 个答案:

答案 0 :(得分: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]。

答案 1 :(得分:0)

尝试不同的订单。将导致外部重定向的规则放在仅导致内部重定向的规则之前:

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