我想允许非 ASCII 字符出现在我的网址中。
过去我运行以下重写规则
RewriteRule ^([\w()-]+)/?$ rewrite.php?a=$1 [NC,L,QSA]
RewriteRule ^([\w()-]+)/([\w()-]+)/?$ rewrite.php?a=$1&b=$2 [NC,L,QSA]
RewriteRule ^([\w()-]+)/([\w()-]+)/([\w()-]+)/?$ rewrite.php?a=$1&b=$2&c=$3 [NC,L,QSA]
RewriteRule ^([\w()-]+)/([\w()-]+)/([\w()-]+)/([\w()-]+)/?$ rewrite.php?a=$1&b=$2&c=$3&d=$4 [NC,L,QSA]
RewriteRule ^([\w()-]+)/([\w()-]+)/([\w()-]+)/([\w()-]+)/([\w()-]+)/?$ rewrite.php?a=$1&b=$2&c=$3&d=$4&e=$5 [NC,L,QSA]
我需要进行更改以允许使用非 ASCII 字符,例如 é
所以我将 [\w()-] 替换为 [-0-9a-zA-Z\W]
RewriteRule ^([-0-9a-zA-Z\W]+)/?$ rewrite.php?a=$1 [NC,L,QSA]
RewriteRule ^([-0-9a-zA-Z\W]+)/([-0-9a-zA-Z\W]+)/?$ rewrite.php?a=$1&b=$2 [NC,L,QSA]
RewriteRule ^([-0-9a-zA-Z\W]+)/([-0-9a-zA-Z\W]+)/([-0-9a-zA-Z\W]+)/?$ rewrite.php?a=$1&b=$2&c=$3 [NC,L,QSA]
RewriteRule ^([-0-9a-zA-Z\W]+)/([-0-9a-zA-Z\W]+)/([-0-9a-zA-Z\W]+)/([-0-9a-zA-Z\W]+)/?$ rewrite.php?a=$1&b=$2&c=$3&d=$4 [NC,L,QSA]
RewriteRule ^([-0-9a-zA-Z\W]+)/([-0-9a-zA-Z\W]+)/([-0-9a-zA-Z\W]+)/([-0-9a-zA-Z\W]+)/([-0-9a-zA-Z\W]+)/?$ rewrite.php?a=$1&b=$2&c=$3&d=$4&e=$5 [NC,L,QSA]
当我访问 /abc/abc/abcabc/abc/abéééééé/
它工作正常,但是现在我以前工作的一些网址是基本的 ascii 路径,例如 /abc/abc/abcabc/ 现在显示错误“ERR_TOO_MANY_REDIRECTS”
知道为什么吗?是否有更好的重写规则来允许 A-Z 0-9 ( ) - _ 和非 ascii 字符?
好吧,过去 30 分钟我一直在玩 chatgpt 试图解决这个问题
到目前为止这似乎有效
RewriteRule ^([^\s/]+)/([^\s/]+)/([^\s/]+)/([^\s/]+)/([^\s/]+)/