允许 htaccess 查询字符串验证中的任何字符(非英文字符)

allow any character in htaccess query string validation (non-English characters)

我有这个 htaccess 规则

RewriteRule ^page/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/(.*)/([0-9a-zA-Z_-_]+)
/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)$ page.php?lang=&search=&state_type=&city=
&stats=&area=&cost= [NC,L]

第四个查询字符串是阿拉伯语,我想允许任何字符,只要 [0-9a-zA-Z_-] 仅针对英文字符进行验证。当我使用 (.*) 时,它允许任何英文字符,但当我插入阿拉伯字符时,出现 404 错误。那么如何让htaccess验证规则中的任意字符获取阿拉伯值呢?

[更新] 将 htaccess 规则更改为:

RewriteRule ^page/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ page.php?lang=&search=&
state_type=&city=&stats=&area=&cost= [NC,L]

现在我没有收到 404 错误,但是当我回显查询字符串值(阿拉伯语)时,我得到空值,当我将其更改为英语时,它工作正常。我尝试将所有查询字符串值更改为阿拉伯语并得到相同的结果:空的,因为它根本不存在。

尝试

RewriteRule ^page/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ page.php?lang=&search=&state_type=&city=&stats=&area=&cost= [B,NC,L]

. 太贪心了,所以只要寻找任何不是 / 的东西。 B 标志将解码字符转回适合查询字符串的转义字符。