:如何讓mod_rewrite只在輸入特定的url時才重寫?
- 基礎水平(mywebsite.com)
- 頁( mywebsite.com/news)
- 子頁/篇(mywebsite.com/news/123)
,並正在按照預期的所有三個,這是我的.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ index.php?page=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?page=$1&sub=$2 [L]
我不得不承認,我不是很好的與的.htaccess/mod_rewrite的正則表達式,因爲它是我做了很少到這一點。
但是現在我的問題是,如果頁面標識(請參閱$ 1)無效,人們不會被髮送到404錯誤頁面,就像人們可以在技術上輸入mywebsite.com/asdasdasd/並且它會將它們顯然)的index.php,現在我的問題是,這可以在.htaccess中以某種方式完成,或者我應該只使用PHP來檢查他們輸入的ID是否有效?我也看到有一個東西叫RewriteMap指令,但我不想改變的httpd.conf
誰能幫助?
通常驗證數據庫'id'是在php級別完成的,而不是在http服務器級別以下。所以很可能你想從你的php腳本發送一個404頭文件,這個頭文件可以從數據庫中獲取請求的頁面。否則,你必須檢查數據庫_twice_哪個(通常)會造成性能損失。 – arkascha
@arkascha就像我想的那樣,基本上通過htaccess正則表達式獲取參數,並讓PHP處理其餘部分,並根據需要將用戶重定位到404頁面,感謝輸入。 – Cerbion