您好我有一个使用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。
感谢名单, 花岗岩
答案 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