0

在我的 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]

这是转换吗?到 # 除非 url 有以下之一:

/admin
/access.php

所以像下面这样的 url 不会得到 ? 转换:

http://mysite.com/access.php?login=special

但是,现在我要求使用 ? (不是#)被允许使用:

http://mysite.com/?s=somesearchstring&submit=Search

我正在苦苦挣扎,试图让它发挥作用。按照目前的规则?得到转换,我最终得到:

http://mysite.com/#s=somesearchstring&submit=Search

但我不需要转换它?到#。

有什么建议么?

4

2 回答 2

1

改变

RewriteCond %{QUERY_STRING} .

RewriteCond %{QUERY_STRING} !(^|&)s=.*?(&|$)
RewriteCond %{QUERY_STRING} !(^|&)submit=Search(&|$)

如果两者都存在,则不会修改?为。它们可以按自己喜欢的任何顺序出现。# ssubmit

于 2013-08-08T17:06:08.063 回答
0

似乎添加以下作品:

RewriteCond %{QUERY_STRING} !^s=

但我担心我对为什么缺乏清晰的理解可能会导致一些问题。

以下是我的理解:

如果查询字符串

!(does not)^(start with)s=

我错过了什么吗?乍一看,这似乎解决了我的问题,但也许它不完整或容易出错?

于 2013-08-08T17:05:01.903 回答