好吧,我的.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;
答案 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]