如何在子目录和参数中重写URL?

时间:2016-01-29 06:41:53

标签: regex .htaccess mod-rewrite

以下是我正在使用的页面:

  

www.domain.com/clothing/mens/brand.html?brand=DOPE

我想将其更改为:

  

www.domain.com/clothing/mens/DOPE

我目前正在使用:

RewriteEngine On
RewriteRule  ^mens/brand/([0-9a-zA-Z]+) mens/brand.php?brand=$1 [NC,L]

但会产生不良影响:

  

www.domain.com/clothing/mens/brand/DOPE

当我删除"品牌":

RewriteRule  ^mens/([0-9a-zA-Z]+) mens/brand.php?brand=$1 [NC,L]

我没有收到错误但只有空白页。 我做错了什么? 我已经尝试了一切,似乎没有任何工作:(

3 个答案:

答案 0 :(得分:1)

试试这个:

CALayer

您使用的网页是brand.html或brand.php?

答案 1 :(得分:0)

让我们做一点回顾。您想要进行此重定向:

clothing/mens/DOPE   ->   clothing/mens/brand.html?brand=DOPE

但您使用的规则(问题中提到的第一个规则)会执行此操作:

mens/brand/DOPE      ->   clothing/mens/brand.html?brand=DOPE

我认为你应该使用这个规则:

RewriteEngine On
RewriteRule  ^clothing/mens/([\da-z]+) mens/brand.php?brand=$1 [NC,L]

请注意,您只需使用[\da-z](或[0-9a-z])代替[0-9a-zA-z],因为您正在使用无案例[NC]标记。

答案 2 :(得分:0)

我感谢所有尝试提供帮助的人,但这里有其他人寻找答案的方法。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^mens/([^/]+)$ mens/brand.php?brand=$1 [L]