Iam在.htacces文件中使用URL重写。下面是精确代码。它的工作正常。但是我在参数中传递Unicode字符[即:mypage.php?id = 2& ampname =தமிழ்]。它显示了一些代码,例如'%25E0%25AE%25A8%25E0%25AE%2'和结果是找不到页面404.任何人都可以解决这个问题吗?
RewriteEngine on
RewriteCond %{THE_REQUEST} /mypage\.php\?id=([^\s&]+)&name=([^\s&]+) [NC]
RewriteRule ^ %1/%2? [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9+]+)/?$ mypage.php?id=$1&name=$2 [L,QSA]
答案 0 :(得分:3)
当URI用于匹配重写规则的正则表达式模式时,它首先被解码,因此那些%
和十六进制值变为unicode。您的正则表达式模式[A-Za-z0-9-]+
与unicode不匹配。尝试更改您的第二条规则,以便它匹配任何非/
的内容:
RewriteEngine on
RewriteCond %{THE_REQUEST} /mypage\.php\?id=([^\s&]+)&name=([^\s&]+) [NC]
RewriteRule ^ %1/%2? [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ mypage.php?id=$1&name=$2 [L,QSA]