Mod Rewrite for Server Status 503,具体取决于URL

时间:2011-09-12 12:29:10

标签: php apache .htaccess mod-rewrite url-rewriting

我想仅在出现错误时重定向(服务器状态503)。没有错误,这是重定向脚本,工作正常:

Redirect /abc https://www.abc.com/pqr.html
Redirect /cde https://www.cde.com/pqr.html

但是,在所有情况下,这会将/ abc重定向到https:// www.abc.com/pqr.html。我想要这个重定向只在出现错误的情况下。语法如下:

ErrorDocument 503 https://www.abc.com/pqr.html

将包含503错误消息的所有网址重定向到https:// www.abc.com/pqr.html。但是,我希望将带有503错误消息的/ cde重定向到https:// www.cde.com/pqr.html

关于如何做的任何线索?

2 个答案:

答案 0 :(得分:0)

这对我来说非常有用。在Apache论坛中得到了这个答案:

<VirtualHost x.x.x.x:80>
   ServerName www.mysite.com
   <Location /books>
           ErrorDocument 503 http://www.mypartnersite.com/books
   </Location>
   <Location /music>
           ErrorDocument 503 http://www.mypartnersite.com/music
   </Location>
   ...
</VirtualHost>

答案 1 :(得分:-1)

首先让我们了解ErrorDocument指令是无条件的,并且不能在.htaccess中包含if cond then ErrorDocument类型的表达式。

然而,有一种解决方法可以实现这一目标。为此,您需要使用mod_rewrite捕获这些条件,并且应该使用自定义错误代码重定向。然后你可以拥有自己的自定义错误代码的ErrorDocument。例如:

RewriteRule ^cde/invalidUrl - [L,R=425]    
ErrorDocument 425 https://www.abc.com/pqr.html

上面的ErrorDocument只会影响/cde/*个URI,不会影响其他URI。