2010-12-09 85 views
4

所以我只是繼承了一個網站。我想要做的第一件事是建立一個漂亮的小標準,簡單易用的CMS,它允許用任何URL創建一個頁面(例如:whatever.html)。使用.htaccess通過index.php重新路由所有請求除了一定的請求集

因此,如果用戶點擊example.com/whatever.html,它應該得到任何數據庫信息爲whatever.html並顯示它。這是工廠的東西。

我的問題是,網站上有很多頁面(全部列在.htaccess中)需要繼續訪問。例如,/促銷通過.htaccess鏈接到promotions.php,我需要它保持這種方式。

任何人都知道我可以如何構建.htaccess文件以允許特定的重寫仍然工作,但通過index.php重新路由所有其他請求?

目前,我只是讓.htaccess顯示一個自定義404頁面,然後檢查數據庫的網址,並顯示它,如果它存在。這是一個簡單的解決方案,但我知道有些人有奇怪的瀏覽器工具欄(愚蠢或沒有,他們存在:)),autoredirect 404s,我不想用這些工具欄惹惱我的用戶不允許訪問某些頁面。

非常感謝您的幫助!

回答

5

促銷的RewriteRule應仍然工作,因爲它不是404。

如果404處理程序正在顯示頁面,因爲它存在於數據庫中,那麼它應該確實返回200 OK狀態(覆蓋404頁面),所以您不應該在瀏覽器工具欄中發現任何問題。

至於做改道,你可以做這樣的事情:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^.*/(promotions|anotherone|somethingelse)($|/.*$) [NC] 
RewriteRule ^(.*)$ /index.php?p=$1 
+0

真棒,謝謝! – Dylan 2010-12-09 18:55:08

3

這裏是另一種變體:

RewriteEngine on 
RewriteRule ^/i/(.*)$ - [L] 
RewriteRule ^/css/(.*)$ - [L] 
RewriteRule ^index.php$ - [L] 
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA] 
相關問題