首页 > 解决方案 > Apache2 结合 RewriteRules

问题描述

我的 .htaccess 中有大约一百个RewriteRules,例如以下几个:

RewriteRule ^cars-and-([%a-zA-Z0-9_-]+)/$ https://example.com/cars-and-$1 [R=301,L]
RewriteRule ^cars-and-([%a-zA-Z0-9_-]+)/0[/]{0,1}$ https://example.com/cars-and-$1 [R=301,L]
RewriteRule ^cars-and-([%a-zA-Z0-9_-]+)/([0-9]+)$ /pathto/search.php?city=$1&page=$2 [L]
RewriteRule ^cars-and-([%a-zA-Z0-9_-]+)$ /pathto/search.php?city=$1&page=0 [L]

我现在想添加对 AMP 页面的支持。只需.amp在 URL 中添加一个结尾即可显示该页面的 AMP 版本。

我可以创建 100 个额外RewriteRule的 s 来涵盖所有这些情况.amp,但我想知道是否有更简单的方法可以继续?

amp=1当检测到 .amp 时添加一个参数然后回退到现有的重写(不删除参数)时,有没有办法添加一个 RewriteRule amp=1

标签: apachemod-rewrite

解决方案


您可以在现有规则之上尝试类似的方法:

RewriteRule (.+)(\.amp)$ $1?amp=1

然后将QSA标志添加到您现有的标志中。

请注意,您必须避免该[L]新规则上的标志,以便它通过其余规则。


推荐阅读