我无法使用中文字符查找有关Apache mod_rewriting的信息(我可以找到与数字相关的所有信息)。
我想重写/character.php?character=宠
(其中字符是搜索的结果,因此会有所不同)到/character/宠
。
这是我的(差)尝试:
RewriteRule ^character/?$ characters?character=$1 [NC,L]
我将不胜感激。
谢谢, 丹
答案 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]