在我的htaccess中我转换? #以及以下内容:
# The below 2 lines will convert a ? to a # in the query.
RewriteCond %{REQUEST_URI} !^\/*(admin|access.php)
RewriteCond %{QUERY_STRING} .
RewriteRule ^(.*) /$1#%{QUERY_STRING}? [R=301,L,NE,NC]
这是做什么转换? to#除非url有以下之一:
/admin
/access.php
所以如下的网址将无法获得?转换:
http://mysite.com/access.php?login=special
但是,现在我要求使用一个搜索参数? (而不是#)被允许使用:
http://mysite.com/?s=somesearchstring&submit=Search
我正在努力试图让它发挥作用。按照现行规则?得到转换,我最终得到:
http://mysite.com/#s=somesearchstring&submit=Search
但我不需要转换它吗?到#。
有什么建议吗?
答案 0 :(得分:1)
更改
RewriteCond %{QUERY_STRING} .
到
RewriteCond %{QUERY_STRING} !(^|&)s=.*?(&|$)
RewriteCond %{QUERY_STRING} !(^|&)submit=Search(&|$)
如果 ?
和#
存在,则不会将s
修改为submit
。它们可能以他们喜欢的任何顺序出现。
答案 1 :(得分:0)
似乎添加以下作品:
RewriteCond %{QUERY_STRING} !^s=
但我担心我对原因缺乏清晰认识可能会导致一些问题。
以下是我的理解:
如果查询字符串
!(does not)^(start with)s=
我错过了什么吗?乍一看,这似乎解决了我的问题,但也许它不完整或容易出错?