我有这样的链接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简介。到目前为止,它们涵盖了我在本文中讨论过的大多数字符:.
、(
、)
、+
等