在Apache中使用带有中文字符的mod_rewrite

时间:2013-04-21 01:47:33

标签: apache .htaccess mod-rewrite url-rewriting special-characters

我无法使用中文字符查找有关Apache mod_rewriting的信息(我可以找到与数字相关的所有信息)。

我想重写/character.php?character=宠(其中字符是搜索的结果,因此会有所不同)到/character/宠

这是我的(差)尝试: RewriteRule ^character/?$ characters?character=$1 [NC,L]

我将不胜感激。

谢谢, 丹

2 个答案:

答案 0 :(得分:2)

首先,您的正则表达式不正确。使用?告诉mod_rewrite前面的字符是可选的。它不是任何角色的占位符。

你应该这样做:

RewriteRule ^character/(%[A-Z0-9]{3})$ characters?character=$1 [NC,L]

此规则假定您只想捕获一个字符。如果不是这种情况,或者您需要在其他地方使用相同的规则,请将(%[A-Z0-9]{3})替换为(%[A-Z0-9]+)

您还需要确保您的.htaccess文件以Unicode格式(UTF-8)保存。

答案 1 :(得分:0)

通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^character/(.+)$ /characters?character=$1 [NE,NC,L,QSA]