Mod-Rewrite

Apache Mod Rewrite 直接去槓桿內容

  • October 27, 2015

我想知道是否可以在不通過狀態 30x 的情況下發送帶有頁面內容的 200 狀態?

範例或重寫條件:

RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteCond %{REQUEST_URI} !errors\/noua\.htm
RewriteRule (.*) /errors/noua.htm

在這種情況下,我想直接以 200 狀態顯示 noua.htm(不執行 301 重定向到 noua.htm)

謝謝

你幾乎已經擁有了

https://httpd.apache.org/docs/2.4/rewrite/flags.html

您缺少一個 P 標誌

RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteCond %{REQUEST_URI} !errors\/noua\.htm
RewriteRule (.*) /errors/noua.htm [P]

謝謝它的工作!

我添加了更多資訊,因為它位於 https 中,因此由於禁用 ssl 代理,重寫規則返回 500 錯誤

我必須添加SSLProxyEngine On虛擬主機才能讓這個答案在 https 中完全工作

我還注意到它必須放在所需的虛擬主機中,如果將它添加到全域 conf 中,則不會共享此參數:

例子:

這行得通

<VirtualHost *:443>
ServerName example.domaine.com
DocumentRoot /var/www/example/
SSLProxyEngine On
RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteCond %{REQUEST_URI} !errors\/noua\.htm
RewriteRule (.*) /errors/noua.htm [P]
...
</VirtualHost>

<VirtualHost *:443>
SSLEngine on
...
</VirtualHost>

這行不通

<VirtualHost *:443>
ServerName example.domaine.com
DocumentRoot /var/www/example/
RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteCond %{REQUEST_URI} !errors\/noua\.htm
RewriteRule (.*) /errors/noua.htm [P]
...
</VirtualHost>

<VirtualHost *:443>
SSLEngine on
SSLProxyEngine On
...
</VirtualHost>

引用自:https://serverfault.com/questions/731828