Dot-Htaccess
一個 RewriteCond 用於多個 RewriteRules
我需要保留所有使用者查詢字元串。
RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^$ index.html?page=home&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^about$ index.html?page=about&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^contact$ index.html?page=contact&%1
如何為所有 RewriteRules 指定 RewriteCond ?
我不期待單個通用控制器 RewriteRule,因為這是一個小型靜態網站。
對於您的三個範例,這些將起作用:
RewriteRule ^$ index.html?page=home [QSA,L] RewriteRule ^about$ index.html?page=about [QSA,L] RewriteRule ^contact$ index.html?page=contact [QSA,L]
訣竅是“QSA”標誌。
編輯:一個稍微更通用的解決方案,這基於 Drupal 是如何做到的:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.html?page=$1 [L,QSA]
!-f 很重要,因為否則您無法提供圖像或 index.html 本身。!-d 行可以刪除,具體取決於您正在做什麼。稍微不同的方法可能是:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)$ index.html?page=$1 [L,QSA]
它將擷取 /foo 和 /bar,但不會擷取 /foo/、/bar/ 或 /foo/bar。