htaccess重写规则以接受印地语字符



我有这样的链接www.example.com/profile.php?name=sagar123

我使用了这个规则:

RewriteRule ^profile/([a-zA-Z0-9_-]+)$ profile.php?name=$1 [L]

现在我可以把我的URL改成这样:

www.example.com/profile/sagar123

一切都很好,但是,现在我想使用印地语字符也像这个

www.example.com/profile.php?名称=सागर(运行良好(

www.example.com/profile/सागर(它不工作,显示服务器错误(

请帮我写一个规则或正则表达式来接受所有([a-zA-Z0-9_-]+(和印地语字符。

谢谢和问候,

印地语字符位于u0900-u097F范围之间。所以你可以在字符类内部使用这个。

为了回答您的问题,大多数正则表达式(PCRE(不支持u表示法和x{900}格式

([x{900}-x{97F}a-zA-Z0-9_-]+)$

在python中支持u,因此:

([u0900-u097Fa-zA-Z0-9_-]+)$

有关regex匹配的信息,请参阅此内容,以演示英文和印地语字符的匹配。

此外,阅读映射到其十六进制值的字面hindi字符请参阅此部分。

使用(.*)正则表达式类来匹配任何类型的字符。

此外,在捕获()parens时,不需要在末尾使用+运算符,因为您使用^来指示URL行的开始,使用$来指示其结束,所以+贪婪运算符不会给您带来任何额外的结果。

它应该看起来像。。。

RewriteRule ^profile/(.*)$ profile.php?name=$1 [L]

如果您需要更多信息,我建议您查看Apache.org:Apache mod_rewrite简介。到目前为止,它们涵盖了我在本文中讨论过的大多数字符:.()+

最新更新