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

标签 apache .htaccess mod-rewrite redirect

我需要一个解决方案来解决我的重定向问题。在 .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

有什么帮助吗?

最佳答案

category.php?page=aquoso-madeira It redirect to category/aquoso

因为您的 RewriteRule 模式 不包含连字符 (-),因此它匹配第一个连字符之前的所有内容,但不包括第一个连字符.

在字符类中包含连字符:

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

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

And this working for query like category.php?page=pinturas and redirect to category/pinturas

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

此规则接受类似 category/pinturas 的请求,并在内部将其重写为 category.php?page=pinturas。 (这里没有外部重定向 - 它可能位于代码的另一部分?)

关于apache - htaccess URL 重写 page.php?page=包含连字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46505346/

相关文章:

php - Tomcat应用访问问题

html - 形成 POST 数组 : IIS vs Apache

PHP/Apache,htaccess 中的选项 +indexes 不适用于根目录

javascript - Ajax:rest api 调用给出错误:未捕获的语法错误:意外的标记:

.htaccess - 在 .htaccess 中如何获取特定值

java - 使用 Java 实现 Mendeley 中的 Oauth 2

.htaccess - htaccess - 如何允许多个 ip 访问站点

php - .htaccess 在亚马逊 ec2 ubuntu 实例中不工作

.htaccess 重定向 - 自动添加 www。如果不存在子域

.htaccess - 如何使 .htaccess 在当前目录而不是子目录上工作?