![htaccess 中 .html 后的查询字符串不起作用。为什么?](https://linux22.com/image/554555/htaccess%20%E4%B8%AD%20.html%20%E5%90%8E%E7%9A%84%E6%9F%A5%E8%AF%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我的网站是用 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]
)
有关标志的概述: