4

如何将所有 404 错误重定向到另一个域?

我找到了

Error 404 http://example.com/error.html

但是我需要:

if Error 404 (.*) http://example.com/$1

我试过了:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://example.com/$1

但它会重定向所有请求,事实上,如果我运行一个 .php 脚本,该脚本会生成一个带有一些 404 链接的页面,那么脚本的 URL 就会变成

http://example.com/script.php

相反,URL 应该保持不变,只有 404 链接应该被重定向到另一个域。

解决方案?

4

1 回答 1

7

1 - 创建ErrorDocument这样的指令:

ErrorDocument 404 /404.php

2 - 然后像这样创建你的404.php

<?php
   if ($_SERVER["HTTP_HOST"] == "domain.com") // current domain
      header('Location: http://example.com' . $_SERVER["REQUEST_URI"], TRUE, 301);
?>

更新仅使用.htaccess:

RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^ http://example.com%{REQUEST_URI} [L,R=301]
于 2013-09-12T12:18:37.143 回答