URL 重定向到同一站点上的另一个页面

URL 重定向到同一站点上的另一个页面

基本上,我想将所有对我的域的请求重定向到特定页面。例如,将所有请求重定向到页面 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>

相关内容