
我習慣遵循重寫規則將整個 url 傳遞給 php 腳本:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*?)$ index.php?rewriteUrl=$1 [QSA,L]
在某些伺服器上,我必須使用
RewriteRule ^(.*)$ index.php?rewriteUrl=$1 [QSA,L]
相反(?
丟失了)。
有沒有辦法讓伺服器自動處理這個問題?以後備/試捕獲或類似的形式?
答案1
如果您知道兩台伺服器之間的不同版本號,請使用模組版本去做這個。例如,如果 2.3+ 使用?
:
<IfVersion >= 2.3>
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*?)$ index.php?rewriteUrl=$1 [QSA,L]
</IfVersion>
<IfVersion < 2.3>
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rewriteUrl=$1 [QSA,L]
</IfVersion>
使用伺服器簽名將版本資訊傳送給客戶端。