为什么这个RewriteRule适用于301重定向但没有别的?

时间:2012-09-20 22:58:33

标签: .htaccess url-rewriting

我有以下重写规则:

RewriteRule ^(.*)/white/(.*)/$ /$1/$2/?tags=white [R=301,L]

它有效并改变了以下内容:

http://bag-saver.com/uk/shop/white/clutch-bags/

成:

http://bag-saver.com/uk/shop/clutch-bags/?tags=white

但是,我不想要301.我想简单地重写URL。我尝试了以下内容:

RewriteRule ^(.*)/white/(.*)/$ /$1/$2/?tags=white [QSA,L]

但是一旦我删除R = 301,我就会发现页面未找到错误。

为什么会这样?

编辑 - 以下是其他规则:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^(.*)-[0-9]{9}[0-9]+/$ /$1/ [R=301,L]
RewriteRule ^(.*)/white/(.*)/$ /$1/$2/?tags=white [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

2 个答案:

答案 0 :(得分:2)

使用[P] flag

RewriteRule ^(.*)/white/(.*)/$ /$1/$2/?tags=white [P]

<强>更新
其他选项只是删除R=301以避免强制重定向

RewriteRule ^(.*)/white/(.*)/$ /$1/$2/?tags=white [L]

答案 1 :(得分:-1)

要修复页面未找到错误,您可以尝试将index.php设置为Apache中的默认页面,如果缺少该页面,请执行此操作打开apache配置文件{{1} }:

httpd.conf

找出如下所示的行:

vi httpd.conf

现在根据您的要求进行设置:

DirectoryIndex

保存并关闭文件。重新启动Apache Web服务器:

DirectoryIndex index.html index.htm index.php

请注意,如果您无权访问Apache配置文件。将/etc/init.d/httpd restart 添加到您的DirectoryIndex文件中。