【问题标题】:How to put % or any other in RewriteRule in .htaccess如何在 .htaccess 中的 RewriteRule 中放置 % 或任何其他内容
【发布时间】:2014-03-05 15:37:25
【问题描述】:

嗯,我的 .htaccess 中有重写规则

RewriteRule ^([a-z]+)/?([a-zA-Z0-9+_-]+)?,?((\d+))?/?((\d+))?/?$ index.php?page=$1&id=$2&cat=$3&view=$5 [QSA,L]

所以如果我有这样的页面:/search/search+word,5/2 没有问题...

但如果我有这样的页面:/search/%EA%EE%F2%EA%E8,5/2 有问题。我的搜索表单不能使用西里尔字母。我尝试将 % 或 \% 或 ^% 放入 RewriteRule 但没有运气:( 我尝试使用更多符号,而不是在索引中用 % 替换它,但再次不起作用。

有人能告诉我如何让这个 RewriteRule 与 % 一起使用吗? (或者用另一个我可以使用的符号)

编辑:

使用这条规则:

RewriteRule ^([a-z]+)/?([^,]+)?,?((\d+))?/?((\d+))?/?$ index.php?page=$1&id=$2&cat=$3&view=$5 [QSA,L,B]

答案是:

sitename.com/ -> Page:index; ID:.php; CAT:; VIEW:; <- ERROR: must be page="" and ID=""

sitename.com/home/ -> Page:home; ID:; CAT:; VIEW:;

sitename.com/video/152 -> Page:video; ID:152; CAT:; VIEW:;

sitename.com/video/0/3/ -> Page:video; ID:0/3; CAT:; VIEW:; <- ERROR: must be VIEW=3

sitename.com/search/ -> Page:search; ID:; CAT:; VIEW:;

sitename.com/search/search+word/ -> Page:search; ID:search+word/; CAT:; VIEW:; <- Its OK... but still don't want this / in the id query

sitename.com/search/search+word,2/ -> Page:search; ID:search+word; CAT:2; VIEW:;

sitename.com/search/search+word,2/3/ -> Page:search; ID:search+word; CAT:2; VIEW:3;

【问题讨论】:

    标签: .htaccess rewrite rule


    【解决方案1】:

    你可以使用这条规则:

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    ## If the request is for a valid file
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    ## If the request is for a valid link
    RewriteCond %{REQUEST_FILENAME} -l
    ## don't do anything
    RewriteRule ^ - [L]
    
    RewriteRule ^([a-z]+)/([^,]+),(\d+)/(\d+)/?$ index.php?page=$1&id=$2&cat=$3&view=$4 [NC,QSA,L,B]
    RewriteRule ^([a-z]+)/([^,/]+)/(\d+)/?$ index.php?page=$1&id=$2&view=$3 [NC,QSA,L,B]
    RewriteRule ^([a-z]+)/([^,/]+)/?$ index.php?page=$1&id=$2 [NC,QSA,L,B]
    RewriteRule ^([a-z]+)/?$ index.php?page=$1 [NC,QSA,L,B]
    

    【讨论】:

    • 不...它仍然不起作用:/ 未找到 在此服务器上未找到请求的 URL /search/êîòêè,2/3/。
    • 试试这个:RewriteRule ^([a-z]+)/([^,]+),(\d+)/(\d+)/?$ index.php?page=$1&amp;id=$2&amp;cat=$3&amp;view=$4 [QSA,L,B]
    • 伙计……这行不通!现在我看到如果我没有 /page/id/2 并且页面停止工作......
    • sitename.com/sitename.com/video/5 sitename.com/search/ 它仅适用于:sitename.com/search/search+word,2/3/ 但是...我编辑与?进入这个 RewriteRule ^([a-z]+)/?([^,]+)?,?((\d+))?/?((\d+))?/?$ index.php?page=$1&id= $2&cat=$3&view=$5 [QSA,L,B] 但是当我在索引中时,索引仍然存在问题,它将索引发送到页面并将 .php 发送到 id..
    • 我尝试...但不起作用...我真的对 RewriteRules 一无所知...我尝试?(^[a-zA-Z0-9+_-] +)?还是 ?([^,][a-zA-Z0-9+_-]+)?或 ?([a-zA-Z0-9+_-]+[^,])?还是 ?([a-zA-Z0-9+_-^,]+)?还是?([a-zA-Z0-9+_-^]+)?还是 ?([^,a-zA-Z0-9+_-]+)?等等......但没有任何效果:(
    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    相关资源
    最近更新 更多