1

我正在尝试将一些现有的 mod_rewrite 查询重定向到更好的对应查询,但遇到了一个问题,它将页面的变量附加到 URL 的末尾。

例如,

/garden/garden-benches/cat_199.html 

正变成:

/garden-furniture/patio-furniture/garden-benches-garden-seats/cat_199.html?_a=viewCat&catId=199

我只是不希望最后这些变量。

代码是:

RewriteEngine On
Redirect 301 /garden/garden-benches/cat_199.html http://www.sustainable-furniture.co.uk   /garden-furniture/patio-furniture/garden-benches-garden-seats/cat_199.html

.htaccess 文件的其余部分 - 首先是创建 url。

RewriteBase /
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule cat_([0-9]+)(\.[a-z]{3,4})?(.*)$    index.php?_a=viewCat&catId=$1&%1 [NC]

RewriteCond %{QUERY_STRING} (.*)$
RewriteRule prod_([0-9]+)(\.[a-z]{3,4})?$   index.php?_a=viewProd&productId=$1&%1 [NC]

RewriteCond %{QUERY_STRING} (.*)$
RewriteRule info_([0-9]+)(\.[a-z]{3,4})?$   index.php?_a=viewDoc&docId=$1&%1 [NC]

RewriteCond %{QUERY_STRING} (.*)$
RewriteRule tell_([0-9]+)(\.[a-z]{3,4})?$   index.php?_a=tellafriend&productId=$1&%1 [NC]

RewriteCond %{QUERY_STRING} (.*)$
RewriteRule _saleItems(\.[a-z]+)?(\?.*)?$   index.php?_a=viewCat&catId=saleItems&%1 [NC,L]
4

1 回答 1

0

重写和重定向是两个不同的东西。但是,您仍然可以通过标记规则来使用重写进行重定向:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^garden/garden-benches/cat_199\.html$ garden-furniture/patio-furniture/garden-benches-garden-seats/cat_199.html [R=301,L]

编辑 1 - 我已经删除了RewriteCond %{REQUEST_FILENAME} !-f条件。也许它跳过了它,因为.html文件是文件,并且不会被规则过滤。

于 2013-02-22T11:33:11.557 回答