2015-07-01 59 views
0

我已經當我在塞網址有UTF-8(阿拉伯語)404 NOT FOUND正則表達式UTF-8阿拉伯語

有我的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

+0

這看起來只是htaccess,而不是preg_match或php。這是正確的還是有更多的代碼? – chris85

+0

我已更新帖子!完整的htaccess代碼! –

+0

preg_match是一個使用正則表達式匹配字符串的PHP函數,http://stackoverflow.com/tags/preg-match/info。這看起來像你的htaccess文件中的正則表達式的問題。 'slug'=>'[ا-یa-zA-Z0-9 \ -_] +''在哪裏? – chris85

回答

0

嘗試改變正則表達式的字符類部分[\p{L}\p{N}\p{Pd}_]

\p{L}任何Unicode的有資格作爲一個字母的比賽,但沒有強調

\p{N}比賽任何看起來像數字的東西

\p{Pd}是包含連字符的標點符號。

更多關於Unicode的正則表達式

+0

不能再工作:找到;( –

0

您可以使用([^/]+)here,它的作品!
此模式允許所有不是斜線的東西。

+2

你想增加你的代碼的答案和解釋嗎? – Yunnosch

+0

如果它成功,你可以結合或做自定義正則表達式的斜槓...... :) –