.htaccess代码QSA使用多个查询参数重写

时间:2016-11-02 02:57:32

标签: .htaccess

我有.htaccess设置来重定向事件页面 /日程安排/事件/ Q =事件名称 - 在这里 至 /日程表/事件/事件名称 - 在这里

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^event/(.*)$ event.php?q=$1 [QSA]

但是,我需要为当天添加第二个查询参数。我想要的新网址是:/ schedule / event / friday / event-name- here 我尝试重写它:

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^event/(.*)$ event.php?day=$1&q=$2 [QSA]

但是当我print_r($ _ GET);一切都在day参数中,q为空。 $ _GET ['day']是星期五/事件名称 - 而不是被解析为正确的参数。我没有找到文档,但我发现了一个类似的SA帖子(.htaccess rewrite rules for multiple parameters)要求几乎相同的东西。它看起来像我一样的格式。但我的工作不正常。

1 个答案:

答案 0 :(得分:0)

您需要在正则表达式中指定两个捕获组

RewriteRule ^event/((mon|tues|wednes|thurs|fri|satur|sun)day)/(.*)$ event.php?day=$1&q=$3 [QSA]

请注意,事件名称与第三个捕获组匹配。第二个匹配日前缀; “mon”,“tues”等。

您可以使第二组更加通用,冒着匹配无效“日期名称”的风险

RewriteRule ^event/([adefhimnorstuw]{3,6}day)/(.*)$ event.php?day=$1&q=$2 [QSA]