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

我在使用中文字符查找关于Apache mod_rewriting的信息时遇到了困难(我能find的所有信息都与数字有关)。

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

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

我将不胜感激任何帮助。

谢谢,丹

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

你应该这样做,而不是:

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

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

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

通过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]