Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
404页的Apache URL重写_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

404页的Apache URL重写

404页的Apache URL重写,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我们正在移动Web服务器,但所有内容尚未迁移。我想做的是,每当有人遇到404时,我想用他们尝试的相同路径将他们重定向到旧服务器 例如: 用户访问: 这将导致404,因此我想自动将它们发送到这里: 我可以使用.htaccess来执行此操作吗?或者我应该在new.test.com的自定义404页面上使用PHP脚本来执行重定向吗?您可以在新站点的文档\u ROOT/.htaccess文件中使用此规则: RewriteEngine On # Request is on new host Rewri

我们正在移动Web服务器,但所有内容尚未迁移。我想做的是,每当有人遇到404时,我想用他们尝试的相同路径将他们重定向到旧服务器

例如:

用户访问:

这将导致404,因此我想自动将它们发送到这里:


我可以使用.htaccess来执行此操作吗?或者我应该在new.test.com的自定义404页面上使用PHP脚本来执行重定向吗?

您可以在新站点的
文档\u ROOT/.htaccess
文件中使用此规则:

RewriteEngine On

# Request is on new host 
RewriteCond %{HTTP_HOST} ^(www\.)?new\.test\.com$ [NC]
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
# redirect to old host URL
RewriteRule . http://old.test.com%{REQUEST_URI} [L,NC,R]
您可以简单地使用指令:

ErrorDocument 404 http://old.test.com/department/something.php
您可以使用本地路径并发送404状态代码。但是,如果您给出一个像上面这样的绝对URI,则会发送302状态码(临时重定向)

但这只适用于固定的目标路径

但是,您可以使用ErrorDocument选择404请求,并使用以下重定向发送目标url,分两步完成此操作:

ErrorDocument 404 /404_to_oldsite/
RewriteEngine On
RewriteRule   ^/404_to_oldsite/  http://master.example.com{REDIRECT_REQUEST_URI}  [R,L]
这需要启用模块
mod_rewrite


如果某个页面被调用但找不到,它将被重定向到本地url,然后该本地url将被重定向到旧站点。浏览器应该可以从那里获得页面。

非常感谢,工作得很好。超级快速的响应!