这里是关于在php语言上开发的应用程序。
问题在于分页,有三个变量(PAGE,refone,reftow)
不是表单看起来像:
<from>
<input type=text name=refone>
<input type=text name=reftow>
<input type=submit value=search name=search>
</from>
当用户提交搜索结果时,
例如 - &gt; refone = 1和reftow = any
in the actual url = ?page=1&refone=1&reftow=% ... this works
with .htaccess url = ?page/1/1/% ... not works
现在因为有搜索的两个选项(refone&lt; - &gt; reftow)(refone - &gt; any)(任何&lt; - reftow)基本上它正在使用普通网址,但是当我使用时。 htaccess用于缩短它并且不让用户知道确切的url作业,所以我使用下面的.htaccess来更好地保护和网址管理,如缩短。
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} -d
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule . - [L]
RewriteRule ^sref/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+) sref.php?page=$1&refone=$2&reftow=$3 [L,NC]
RewriteRule ^sref/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+) sref.php?page=$1&refone=$2 [L,NC]
RewriteRule ^sref/([-a-zA-Z0-9]+)/?$ sref.php?page=$1 [L,NC]
现在是以下情况:
http://m.lhost/web/sref.php?page=1&refone=1&reftow=%
http://m.lhost/web/sref.php?page=1&refone=%&reftow=1
http://m.lhost/web/sref.php?page=1&refone=%&reftow=%
它有效,即使我像第2,3页一样使用分页......它会起作用但是在使用.htacess之后
http://m.host/web/sref/1/1/%
http://m.host/web/sref/1/%/1
http://m.host/web/sref/1/%/%
这里不能罚款网址。 注意:在搜索之后,它将使用基于搜索结果的分页,这里没有.htaccess工作正常但是如果我使用.htacess有问题。
提前感谢任何建议。
答案 0 :(得分:0)
您必须将%
添加到允许的字符列表中,同时您的RewriteRule应以web/sref/...
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} -d
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule . - [L]
RewriteRule ^web/sref/([A-Za-z0-9_-]+)/([\%A-Za-z0-9_-]+)/([\%A-Za-z0-9_-]+) sref.php?page=$1&refone=$2&reftow=$3 [L,NC]
RewriteRule ^web/sref/([A-Za-z0-9_-]+)/([\%A-Za-z0-9_-]+) sref.php?page=$1&refone=$2 [L,NC]
RewriteRule ^web/sref/([-a-zA-Z0-9]+)/?$ sref.php?page=$1 [L,NC]