非ascii字符、连字符、下划线和括号的重写规则?

问题描述 投票:0回答:1

我想允许非 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 字符?

.htaccess mod-rewrite url-rewriting
1个回答
0
投票

好吧,过去 30 分钟我一直在玩 chatgpt 试图解决这个问题

到目前为止这似乎有效

RewriteRule ^([^\s/]+)/([^\s/]+)/([^\s/]+)/([^\s/]+)/([^\s/]+)/

© www.soinside.com 2019 - 2024. All rights reserved.