0

我有这个 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=$1&search=$2&state_type=$3&city=$4
&stats=$5&area=$6&cost=$7 [NC,L]

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

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

RewriteRule ^page/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ page.php?lang=$1&search=$2&
state_type=$3&city=$4&stats=$5&area=$6&cost=$7 [NC,L]

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

4

1 回答 1

2

尝试

RewriteRule ^page/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ page.php?lang=$1&search=$2&state_type=$3&city=$4&stats=$5&area=$6&cost=$7 [B,NC,L]

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

于 2016-10-31T04:56:32.037 回答