在htaccess中合并重写条件

时间:2019-01-23 06:42:08

标签: .htaccess mod-rewrite

我的.htaccess中有许多重写规则和条件,如下所示:

RewriteCond %{QUERY_STRING}  "limit"
RewriteRule scripts/api.php -  [E=Cache-Control:max-age=3600]

RewriteCond %{QUERY_STRING}  "limit"
RewriteRule scripts/api_1.php -  [E=Cache-Control:max-age=3600]

RewriteCond %{QUERY_STRING}  "limit"
RewriteRule scripts/api_2.php -  [E=Cache-Control:max-age=3600]

RewriteCond %{QUERY_STRING}  "limit"
RewriteRule scripts/api_3.php -  [E=Cache-Control:max-age=3600]

RewriteCond %{QUERY_STRING}  "limit"
RewriteRule scripts/api_4.php -  [E=Cache-Control:max-age=3600]

以上条件将所有URL缓存在scripts / api.php的URL中包含“限制”字,后跟URL中的查询字符串,例如“&”。我需要添加更多这样的api,因此有没有办法结合所有这些条件并缓存所有包含 scripts / api

的网址

RewriteCond %{QUERY_STRING}  "limit"
RewriteRule scripts/api* -  [E=Cache-Control:max-age=3600]

我不认为上述条件是正确的,任何人都可以建议我正确的方法。

1 个答案:

答案 0 :(得分:0)

重写规则接受正则表达式作为第一个参数,而不是通配符字符串模式。

这可能是您要寻找的:

RewriteEngine on
RewriteCond %{QUERY_STRING} limit
RewriteRule ^/?scripts/api(_\d+)?\.php$ -  [E=Cache-Control:max-age=3600]

在这种情况下使用更精确的模式可能也很有意义...例如,为了防止其他HTTP GET参数以意外的方式进行干预,例如...&otherArg=mylimit&...之类的可能是不是您要接受的limit ...