在htaccess中的.html之后的查询string不工作,为什么?

我的网站是用PHP编写的。 我已经改变了从PHP到HTML的url,并重新在.htaccess文件中。

我把自动完成jquery ui小部件在我的网站的页面,并调用远程文件来获取build议的项目不起作用。 因为远程url已更改为

 search.html?term=spr 

我把这行放在htaccess文件中,但是它不会匹配,因为它不会考虑\.html之后的任何内容。

 RewriteRule ^search\.html?term=([^-]+)$ search.php?term=$1 [L,NC,NS] 

我也试过了

 RewriteRule ^search\.html\?term=([^-]+)$ search.php?term=$1 [L,NC,NS] 

但两者都不起作用。

你能帮我吗?
谢谢。

你需要告诉Apache追加查询string(QSA = Q uery s tring a ppend)

  RewriteRule ^search\.html$ search.php [L,NC,NS,QSA] 

^search\.html$是一个匹配文字search.html的正则expression式。 ^匹配从开始, $匹配直到结束和\. 匹配字面点而不是任何字符(正则expression式中点的特殊含义)

这个规则…

  • 匹配search.htmlRewriteRule ^search\.html$ )的请求
  • search.php
  • 在这之后处理没有规则( [L] ),
  • 匹配不区分大小写(例如, Search.HTML也会被重写)( [NC]
  • 将不会被用于子请求( [NS]
  • 最后在search.php[QSA] )后追加原来的查询string

有关标志的概述:

  • 关于RewriteRule标志的Apache文档 :