2

我有以下重写规则:

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,我就会得到 page not found 错误。

为什么是这样?

编辑 - 以下是其他规则:

# 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
4

2 回答 2

2

使用[P] 标志

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

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

RewriteRule ^(.*)/white/(.*)/$ /$1/$2/?tags=white [L]
于 2012-09-23T23:30:56.980 回答
-1

要修复页面未找到错误,您可以尝试index.php在 Apache 中设置为默认页面,如果缺少,请打开 apache 配置文件httpd.conf

vi httpd.conf

找出如下所示的行:

DirectoryIndex

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

DirectoryIndex index.html index.htm index.php

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

/etc/init.d/httpd restart

请注意,如果您无权访问 Apache 配置文件。添加DirectoryIndex到您的.htaccess文件中。

于 2012-09-23T05:10:16.203 回答