2011-11-05 61 views
0

我在.htaccess中有以下代碼,它適用於名稱只有一個單詞的頁面。但是對於由多於一個單詞組成的頁面名稱而言失敗。如何在.htaccess中處理多個空格分隔的單詞?

RewriteEngine on 
RewriteRule ^(.*)/$ /index.php?page=$1 [L] 

我使用結尾的斜槓來表示url需要重寫,以避免搞亂真實的文件名。

該問題可能與空間網址編碼爲%20這一事實有關。

有關如何修改正則表達式或.htaccess的一般建議?

+0

爲避免干擾真實文件名,請使用RewriteCond%{REQUEST_FILENAME}!-f'和'RewriteCond%{REQUEST_FILENAME}!-d' –

回答

1

RewriteRule documentation包含一個可以設置的標誌列表。在這種情況下閱讀總是值得的。

看來你可能需要B標誌:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) /index.php?page=$1 [B,L] 

的B標誌告訴Apache逃脫非字母數字字符在取代反向引用,這顯然是你想要的。正如Michael所說,同樣,如上所述添加RewriteCond s爲避免重寫正在請求的真實文件名(例如圖像)的URL提供了一種更安全的方法。

相關問題