2013-02-08 31 views
1

我在我的數據庫中有類別名稱,而某些主題帶有法語字符,如èèê。 它可以根據需要直到今天,當我嘗試添加另一個字符到它,然後我開始服務器錯誤帶重寫規則的法語字符

這裏是我的.htaccess:

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^([A-Za-z0-9éèêà_-\s]+)-(\d+)\.htm$ classified.php?id=$2 [L] 

正如你所看到的,它工作正常,而不一個。

如何將該東西添加到正則表達式中?

+0

檢查:[htaccess的國防部\ _rewrite與口音](http://stackoverflow.com/questions/10451601/htaccess-mod-rewrite-with-accents)。實際上,在.htaccess中加入重音字符似乎是不可能的。 – j0k 2013-02-08 20:38:08

+0

[mod_rewrite的'b'標誌](http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_b)上的[Apache文檔]應該可以幫助你解決這個問題。 – Carsten 2013-02-08 20:40:39

+0

爲什麼不使用[^重音符號]?我認爲它在某些情況下更好 – 2013-02-08 20:43:00

回答

1

如果您正在使用的所有類型的字符和重音字母的,那麼爲什麼不只是讓任何東西去通過?

注:使用此規則也允許空格;

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^(.*)-(\d+)\.htm$ classified.php?id=$2 [L] 

而且以後如果你決定限制正則表達式,可以說你不希望任何的這些字符#$%,那麼你必須做出例外:

Options +FollowSymlinks 
    RewriteEngine on 
    RewriteRule ^([^#$%]+)-(\d+)\.htm$ classified.php?id=$2 [L] 
2

似乎URL中的擴展ASCII字符以UTF-8格式和網址編碼方式發送。例如:

/éèêà-1.htm -> /%C3%A9%C3%A8%C3%AA%C3%A0-1.htm 

上面的網址可以通過mod_rewrite的這樣的匹配:

RewriteEngine On 
RewriteRule ^(?:\w|\xC3\xA9|\xC3\xA8|\xC3\xAA|\xC3\xA0)+-(\d+)\.htm$ classified.php?id=$1 [L]