2010-02-17 118 views
1

我有一個url - http://callisto/news/1st_February_is_here... - 它有三個尾隨點,但是當它通過mod_rewrite併到達腳本(在$ _GET中)時,點已被刪除(但是其餘的字符串都可以)。正在從URL中刪除尾部點

這是htaccess的規則:

RewriteRule ^([^/]+)/(.*)$ index.php?__action=site&__filter=$1&__page=$2 [L,QSA] 

感謝。

回答

1

我認爲你使用的職位的標題或類似的東西在你的URI的第三個位置。由於事實上你可能有很多其他的'破壞'字符通過你的URI使用這種方法,所以我建議你在將它附加到URI之前清理標題,並將相同的清理後的字符串放入數據庫以供參考。

刪除所有不是字母數字的字符,並用連字符' - '替換空格 - 這將確保您不會混淆下一行的任何內容或碰到任何使您的URI無法工作的瀏覽器特定問題。

$title = '1st February is here...'; 
$clean_title = preg_replace('/[^a-zA-Z0-9\s]/', '', $title); 
$finished_title = str_replace(' ', '-', $clean_title); 

運行代碼aboce會清除您的標題。

http://callisto/news/1st_February_is_here... 

應該改爲:

http://callisto/news/1st-February-is-here 

或類似的東西。我建議使用連字符而不是下劃線的唯一原因是我偶爾會遇到在URI中傳遞下劃線的問題。

另外,我想你會發現這是Wordpress採用的方法 - 很可能出於同樣的原因,你看到這個問題。

GL!

+0

不是一個壞主意 - 我有一個函數,它已經對鏈接特殊字符進行了編碼和解碼(但沒有緩存)。如果我有更多的時間,我可能會做你的建議,因爲它看起來更加防彈一點,但堅持只是告訴客戶不要在此期間這樣做:) – Meep3D 2010-02-17 14:16:47

+0

@ Meep3d - 祝你的客戶做好一些事情讓他們去做。我認爲這可能是第一個。 :P – Shane 2010-02-17 14:18:07