首页 > 解决方案 > .htaccess - RewriteRule 在另一个 RewriteRule 之后附加到 URL 的末尾

问题描述

我成功执行了 1 个 RewriteRule。然后,我希望将第二个 RewriteRule 附加到第一个 RewriteRule 生成的 URL 的末尾。

我有以下代码:

RewriteEngine On  # Turn on the rewriting engine
RewriteRule ^sports/football/?$ /sports/2018-19/sport_page.php?sport_id=1 [NC]
RewriteRule ^2018-19?$ %{REQUEST_URI}&season_id=39 [L,QSA,R]

第一个 RewriteRule 有效 - 如果在 URL 中找到“sports/football/”,它会根据请求重定向。

然后我想检查 URL 中是否存在“2018-19”,如果存在,我想将“&season_id=39”附加到第一个 ReWriteURL 的结果末尾。

用户访问:http://domain/sports/football/2018-19/

第一次重写规则:http://domain/sports/2018-19/sport_page.php?sport_id=1

第二次重写规则:http://domain/sports/2018-19/sport_page.php?sport_id=1&season_id=39

标签: .htaccess

解决方案


您的 RewriteRule 需要检查完整的 URL 路径。

RewriteRule ^sports/football/2018-19/?$ %{REQUEST_URI}?season_id=39 [L,R]

上述规则将生成重定向循环错误,因为模式和目标路径相同。要解决此问题,您可以将以下内容放在RewriteCond规则之前。

RewriteCond %{QUERY_STRING} ^$

上面的 RewriteCond 确保当 URI 为/sports/2018-19? query staring.


推荐阅读