我正在尝试在我的系统上使用Apache HTTP Server的mod_alias和core创build一个Redirect :
# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.1 (Maipo) # rpm -q httpd httpd-2.4.6-31.el7_1.1.x86_64 #
要求是redirect所有的请求,除了请求到/server-status
# cat /etc/httpd/conf.d/_default.conf <VirtualHost *:80> ServerName _default_ <LocationMatch "^/!(server-status)(.*)?"> Redirect / http://X/ </LocationMatch> </VirtualHost> #
我相信我的问题是在正则expression式的地方,因为无论我打哪个URL,我都会得到404。
1 – 你可以使用mod重写https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
<VirtualHost *:80> ServerName _default_ RewriteCond %{REQUEST_URI} !^/server-status RewriteRule (.*) http://X$1 [L,R=301] </VirtualHost>
2 – 要使用Mod_Alias,您需要RedirectMatch http://httpd.apache.org/docs/current/mod/mod_alias.html
<VirtualHost *:80> ServerName _default_ RedirectMatch 301 ^/(?!server-status)(.*) http://X/$1 </VirtualHost>
3 – 更多信息:
4 – 奖金
(。*)=捕获所有正则expression式
$ 1 =结果var
R =redirect状态码,这里有你的清单:
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
L =标志意思最后,在这里你有国旗列表代码:
https://httpd.apache.org/docs/2.4/rewrite/flags.html
5 – 更多…如果你真的想使用LocationMatch的语法是:
<VirtualHost *:80> ServerName _default_ <LocationMatch "^/(?!server-status)(.*)"> Redirect / http://X/ </LocationMatch> </VirtualHost>