【问题标题】:How to manage search result with pagination on .htaccess shortening如何通过 .htaccess 缩短分页管理搜索结果
【发布时间】:2014-08-13 07:47:22
【问题描述】:

这里是用php语言开发的应用程序。

问题出在分页上,有3个变量(PAGE, refone ,reftow)

表格不会是这样的:

<from>
   <input type=text name=refone>
   <input type=text name=reftow>
<input type=submit value=search name=search>
</from>

当用户提交搜索结果时,

例如 -> refone = 1 和 reftow = any

in the actual url = ?page=1&refone=1&reftow=%     ... this works
with .htaccess url = ?page/1/1/%                  ... not works

现在因为有搜索选项 (refone reftow) (refone -> any) (any

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/%/%

这里不能细化url。 注意:在这里搜索后,它将根据搜索结果使用分页,这里没有 .htaccess 工作正常,但如果我使用 .htacess 有问题。

提前感谢您的任何建议。

【问题讨论】:

    标签: php .htaccess url


    【解决方案1】:

    您必须将 % 添加到允许的字符列表中,并且您的 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]
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-23
    • 2012-07-31
    • 2014-03-26
    • 2017-02-24
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多