基本上,我想将所有对我的域的请求重定向到特定页面。例如,将所有请求重定向到页面 X,除非您已经在页面 X 上,在这种情况下您应该加载它。但我的解决方案只会创建一个无限循环 :/
我试过...
RewriteCond %{REQUEST_URI} !=/underconstruction.html
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !^/underconstruction.html
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
答案1
根据您的描述,您需要一个更类似的重写规则:
RewriteRule ^(.*)$ $LINK [L,R=301]
换句话说,丢失了 $1。这会将原始 URL 附加到新 URL,从而导致无限循环。
(我没有验证条件,但我认为其中一个应该可以工作)
答案2
上述示例的问题是,RewriteRule 行不会重定向到 underconstruction.html,而是大致再次重定向到相同的 URL(因为 $1 与 (.*) 匹配)。
此示例将把所有 URL 301 重定向至“/underconstruction.html”:
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/underconstruction.html
RewriteRule ^ /underconstruction.html [R=301]
(翻译为“如果 URI 不是 /underconstruction.html,则重定向到 /underconstruction.html”)
答案3
怎么样
<VirtualHost *:80>
...
RedirectMatch !^/underconstruction.html http://yourdomain/underconstruction.html
...
</VirtualHost>