如何在.htaccess中将%或任何其他内容放入RewriteRule中

时间:2014-03-05 15:37:25

标签: .htaccess rewrite rule

好吧,我的.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 theres没问题......

但如果我有这样的页面:/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;

1 个答案:

答案 0 :(得分: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]