Mod-Rewrite
Apache Mod Rewrite 直接去槓桿內容
我想知道是否可以在不通過狀態 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>