Apache2结合了RewriteRules

时间:2019-04-08 20:10:41

标签: apache mod-rewrite

我的.htaccess文件中有大约一百个RewriteRule,例如:

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页面的支持。只需在URL末尾添加.amp即可显示页面的AMP版本。

我可以再创建100个RewriteRule来覆盖所有以.amp结尾的情况,但是我想知道是否有更简单的方法吗?

是否有一种方法可以在检测到.amp时添加单个RewriteRule,该参数会添加一个amp=1参数,然后回退到现有的重写(而不丢弃amp=1参数)?

1 个答案:

答案 0 :(得分:1)

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

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

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

请注意,您必须避免在该新规则上使用[L]标志,这样它才能遍历其余所有规则。