apache - .htaccess,将 404 错误重写到其他域

标签 apache .htaccess mod-rewrite

如何将所有 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 链接应该被重定向到另一个域。

解决方案?

最佳答案

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]

关于apache - .htaccess,将 404 错误重写到其他域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18763821/

相关文章:

apache - 使用 .htaccess RewriteRule 重写基于数字的 URL

php - Heroku 403 禁止错误

.htaccess - 将链接重定向到正确的目录

apache - Rewritecond - 错误的标志分隔符 .htaccess (Apache)

mysql - django.db.utils.OperationalError : (1366, "不正确的字符串值) django mysql

apache - Hive 查询花费大量时间来启动 map-reduce 作业

php - 在 Apache 服务器上将特定的 .htm 页面处理为 .php

performance - 其他解决方案,而不是 NGINX 的 .htaccess

php - 如何在运行 ubuntu 的 amazon ec2 中启用 .htaccess

php - .htaccess重写规则异常