我想知道是否有可能发送一个页面内容200状态不通过状态30x?
例如或重写条件:
RewriteCond %{HTTP_USER_AGENT} ^-?$ RewriteCond %{REQUEST_URI} !errors\/noua\.htm RewriteRule (.*) /errors/noua.htm
在这种情况下,我想直接显示noua.htm 200状态(不做301redirect到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中,所以重写规则返回一个500错误,由于SSL代理被禁用
我必须在虚拟主机中添加SSLProxyEngine On ,才能在https中完全使用此答案
我也注意到它必须放在所需的虚拟主机中,如果在全局configuration中添加,则不会共享此参数:
例:
这工作
<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>