htaccess URL重写page.php?page =包含连字符的字符串

时间:2017-09-30 17:35:08

标签: apache .htaccess redirect mod-rewrite url-redirection

我需要一个解决方案来解决我的重定向问题。在.htaccess文件中,我有以下代码:

RewriteEngine On
RewriteRule ^category/([a-zA-Z0-9]+) category.php?page=$1 [NC,L,QSA]

这适用于像这样的查询 category.php?page=pinturas并重定向到category/pinturas

但是,如果字符串有这样的-category.php?page=aquoso-madeira重定向到category/aquoso

任何帮助?

1 个答案:

答案 0 :(得分:2)

  

category.php?page=aquoso-madeira它重定向到category/aquoso

由于您的RewriteRule 模式不包含连字符(-),因此它会匹配所有内容,但不包括第一个连字符。

在字符类中包含连字符:

RewriteRule ^category/([a-zA-Z0-9-]+) category.php?page=$1 [NC,L,QSA]

请注意,连字符(-)必须位于字符类的开头或结尾,因为这是一个特殊字符,在其他地方使用时具有其他含义。

  

这适用于查询,例如category.php?page = pinturas并重定向到category / pinturas

请注意,此重写与您所描述的完全相反。

此规则采用category/pinturas之类的请求,并在内部将其重写为category.php?page=pinturas。 (此处没有外部重定向 - 这可能是您代码的另一部分?)