htaccess 中 .html 后的查询字符串不起作用。为什么?

htaccess 中 .html 后的查询字符串不起作用。为什么?

我的网站是用 PHP 编写的。我已将其 URL 从 php 更改为 html,并在.htaccess文件中重新转换。

我在我的网站页面中放置了自动完成 jquery ui 小部件,但它调用远程文件来获取建议的项目不起作用。因为远程 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]

但两者都不起作用。

你能帮助我吗?
谢谢。

答案1

您需要告诉 Apache 附加查询字符串(QSA =查询s特林A附錄)

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

^search\.html$是与文字匹配的正则表达式search.html^从头开始匹配,$一直匹配到结尾,并且\.匹配文字点而不是任何字符(正则表达式中点的特殊含义)

这条规则...

  • search.html匹配( RewriteRule ^search\.html$)的请求
  • 并将其重写为search.php
  • 此后不再处理任何规则([L]),
  • 匹配不区分大小写(例如Search.HTML也会被重写)([NC]
  • 不会用于子请求([NS]
  • 并最终将原始查询字符串附加到search.php[QSA]

有关标志的概述:

相关内容