2012-08-23 176 views
0

我正在使用一些網址重寫我正在工作的網站。我有重寫數字,字母做工精細和 - 使用此:正則表達式與特殊字符

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ characters.php?realm=$1&name=$2 [NC] 

不過,我需要規則的第一部分,以允許「被允許,我需要規則的第二部分,以允許對於像ú,æ,ä,ç等特殊字符以及類似字母的幾乎所有字符here

我知道特殊字符是壞的,但我不是允許它們用於字符名稱的字符。我只需要他們在我的規則中允許這些名稱的字符可以訪問我的應用程序。

謝謝。

編輯:第一部分現在工作。現在嘗試第二部分。

編輯#2:嘗試第二部分([^ /] +)的兩種解決方案並排除某些字符允許顯示信息而不是導致404錯誤。然而,它導致我的CSS不被顯示,而是試圖調用/ css/error而不是/ css。它正在根據chrome導致css文件的重定向循環。

如果字符數據無效,應該將某個東西重定向到/ error。此應用程序正用於從暴風雪字符api中提取字符信息,因此重要字符可用於重寫是非常重要的。

我不確定這是否重要,但是當我允許將ú與az和AZ一起包括時,我會收到一個404錯誤消息,指出無法找到該頁面,而不是顯示ú它在其位置顯示ú。

+0

匹配「不是斜線」,^([^ /] +)/([^ /] +)$ –

+0

@shhac這似乎工作,但造成我的css奇怪的錯誤。 – akari

回答

0

^([A-ZA-Z0-9 _'-] +)/([^ 排除這裏字符] +)$

添加 「'」 的第一括號內應該允許它匹配。至於第二個去,你可能想要使用否定字符類,並列出你所做的字符不是允許。

編輯後移動「 - 」之前的單引號。

+0

您的第一條建議會導致內部服務器錯誤。 – akari

+0

把它放在「 - 」之前,或者將「 - 」作爲「\ - 」。此外,如果stirng將被語言解析,那麼確保單引號如果是您的語言中的字符串分隔符,則會被轉義。 – Sako73

+0

謝謝,第一部分現在工作。 – akari

0

我能想出的最簡單的解決方案是,例如,ú顯示爲ú,所以我只是簡單地將ú包含在規則中。不知道這是否是最好的方式,但它現在起作用。