我的 .htaccess 文件中有这个
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
我想要做的是在这个配置中添加另一个 RewriteRule 以便像这样的旧 URL 将被重定向到站点的根目录
http://www.acme.com/category.php?id=6
http://www.acme.com/product.php?id=183&category=
我知道“category.php”和“product.php”现在将是无效字符串。以“category.php”为例,我尝试将配置更改为
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^category.php(.*) / [L,R=301]
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
这将重定向如下
http://www.acme.com/category.php?id=112 -> http://www.acme.com/?id=112
我有两个问题
- 我不希望附加查询字符串。我没有指定 [QSA]
- 如果我直接输入根目录
www.acme.com
,除非我删除刚刚添加的行,否则页面不会显示。为什么我的新 RewriteRule 会影响不以“category.php”开头的 URL?
[编辑]
我也试过这个而不是上面的重定向,但我似乎仍然在应用这两个规则
RewriteRule ^category.php /holdingPage.php [L]