正则表达式utf-8阿拉伯语

时间:2015-07-01 20:36:27

标签: regex .htaccess utf-8

当我在我的slu ur网址中使用utf-8(阿拉伯语)时,我找不到404

我的代码在php文件中:

'slug' => '[A-Za-z0-9\_-]+'

这是在htaccess文件中:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

#Charset
AddDefaultCharset utf-8

#Protect - DOS
LimitRequestBody 10000000

#Index Protect
Options All -Indexes

<Files .htaccess>
order allow,deny
deny from all
</Files>

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

RewriteCond %{THE_REQUEST} ^[a-zA-Z0-9\-_]{3,}\s(.*)/index\.php [NC]
RewriteRule ^ %1 [R=301,L]

当我有链接时:www.test.com/تست 服务器返回404未找到,当我使用

'slug' => '[ا-یa-zA-Z0-9\-_]+'

和htaccess相同我有循环重定向!

ا-یA-Zآ-یA-Z

2 个答案:

答案 0 :(得分:1)

你可以使用([^/]+),它有效!
这种模式允许所有不是斜线的东西。

答案 1 :(得分:0)

尝试将正则表达式的字符类部分更改为[\p{L}\p{N}\p{Pd}_]

\p{L}匹配任何符合信函但不强调的unicode

\p{N}匹配任何看起来像数字

的内容

\p{Pd}是标点符号,包含连字符。

有关Unicode正则表达式的更多信息,请参阅here