0

所以我有一种奇怪的麻烦。我有一个重写规则

mysite.com/brand.php?brand=example&ref=ex1

mysite.com/brand/example/ex1

我设法做到了,但还有另一个问题:当你输入这个时:

mysite.com/brand/example/ex1.html

或者

mysite.com/brand/example/ex1.php

我明白了:

mysite.com/brand/example/ex1?ref=ex1.php&brand=example

谁能告诉我为什么会得到这个重定向以及如何摆脱它?

我试过这个:

RedirectMatch   ^brand/([A-Za-z0-9-\.\_]+)/([A-Za-z0-9-\.\_]+)php$ /brand/$1/$2

或这个:

RedirectMatch   ^brand/([A-Za-z0-9-\.\_]+)/([A-Za-z0-9-\.\_]+)\.php$ /brand/$1/$2

但它根本行不通。

请任何人帮助我!

4

1 回答 1

0

我会用mod_rewrite这个:

RewriteEngine On
RewriteCond %{REQUEST_URI} =/brand.php
RewriteCond %{QUERY_STRING} ^brand=([^&]+&ref=(.+)$
RewriteRule .* /brand/%1/%2? [L,R]

RewriteRule仅当两者都RewriteCond有效时才应用。第一个RewriteCond将请求 URL 与 进行比较/brand.php,第二个将正则表达式与查询字符串匹配,并将匹配项分别存储在%1%2中。

其中RewriteRule是使用查询字符串中的匹配部分重写的 URL。

于 2012-11-25T20:15:00.073 回答