如何使用htaccess

时间:2017-06-15 18:40:03

标签: php apache .htaccess redirect mod-rewrite

我已经搜索了所有堆栈溢出的答案,但似乎找不到任何东西所以我决定试一试并发布我的问题。

我有以下重写规则:

RewriteRule ^clients\/viewClients\/invoice\/\?id=([0-9]+)&invoice=([0-9]+)$ index.html

我希望它以某种方式工作,以便在用户输入

  

... /客户端/ viewClients /发票/ ID = 28137&安培;发票= 16884

进入浏览器,他或她被重定向到index.html

我已经使用正则表达式测试程序测试了此规则,并且url通过了。

我很困惑,因为以下重写规则有效:

RewriteRule ^clients\/viewClients\/\?id=([0-9]+)$   index.html

当用户输入此网址时:

  

../客户/ viewClients /?ID = 28137

这两个规则之间的唯一区别是第一个规则在搜索查询中有一个额外的路径和一个额外的参数。

我希望有人可以为我澄清这个问题并为第一个重写规则提供解决方案

1 个答案:

答案 0 :(得分:0)

无效,因为查询字符串不是RewriteRule测试网址的一部分。

您可以使用以下命令重写所有查询:

RewriteCond %{QUERY_STRING} .+
RewriteRule ^clients/viewClients/ index.html [NC,L]

或仅限第一个:

RewriteCond %{QUERY_STRING} .+
RewriteRule ^clients/viewClients/invoice/$ index.html [NC,L]