Fez*_*sta 4 apache .htaccess mod-rewrite
如何将所有404错误重定向到另一个域?
我找到了
Error 404 http://example.com/error.html
Run Code Online (Sandbox Code Playgroud)
但是我需要:
if Error 404 (.*) http://example.com/$1
Run Code Online (Sandbox Code Playgroud)
我试过了:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://example.com/$1
Run Code Online (Sandbox Code Playgroud)
但它重定向了所有请求,实际上如果我运行.php脚本生成一个带有404链接的页面,脚本的URL就变成了
http://example.com/script.php
Run Code Online (Sandbox Code Playgroud)
相反,URL应该保持不变,只有404链接应该重定向到另一个域.
解决方案?
1 - 创建如下ErrorDocument指令:
ErrorDocument 404 /404.php
Run Code Online (Sandbox Code Playgroud)
2 - 然后创建你404.php喜欢这个:
<?php
if ($_SERVER["HTTP_HOST"] == "domain.com") // current domain
header('Location: http://example.com' . $_SERVER["REQUEST_URI"], TRUE, 301);
?>
Run Code Online (Sandbox Code Playgroud)
UPDATE Using just .htaccess:
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ http://example.com%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3471 次 |
| 最近记录: |