htaccess 重写中的 Unicode 字符
Unicode Characters in htaccess rewrite
我正在使用 URL 重新写入 .htacces 文件。下面是确切的代码。它的工作正常。但是当我在参数中传递 Unicode 字符时 [ie: mypage.php?id=2&name=தமிழ்]。它显示一些代码,如“%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=&name= [L,QSA]
当 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=&name= [L,QSA]
我正在使用 URL 重新写入 .htacces 文件。下面是确切的代码。它的工作正常。但是当我在参数中传递 Unicode 字符时 [ie: mypage.php?id=2&name=தமிழ்]。它显示一些代码,如“%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=&name= [L,QSA]
当 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=&name= [L,QSA]