mod_rewrite 在 URL 参数中包含斜杠

mod_rewrite 在 URL 参数中包含斜杠

是否可以在 url 参数规则中包含斜杠?基本上,我希望 example.com/hello/world/ 转到 example.com?q=hello/world/。任何示例都将不胜感激。

谢谢

答案1

可以实现此目的的重写规则的一个示例是:

RewriteEngine on RewriteRule ^/?(.+)$ ?q=$1

这将捕获“example.com”之后的所有内容并将其转换为 q=x 形式。

我假设您在某些动态服务器端程序(如 Tomcat 或 PHP)前面使用 Apache,因为 Apache 本身无法对包含查询字符串的 URL 执行任何智能操作。在这种情况下,您可能需要将 [PT] 标志添加到重写规则中,以确保入站 URL 在传递到动态引擎之前被重写。规则将如下所示:

RewriteRule ^/?(.+)$ ?q=$1 [PT]

您还应该考虑如果原始入站 URL 包含其自己的查询字符串会发生什么情况。此示例规则将不是在重写时包含入站查询字符串,但您可以使用 QSA 标志执行此操作。

相关内容