我们正在移动网络服务器,但所有内容尚未迁移。我想做的是每当有人遇到404时,我都希望将它们重定向到旧服务器,并使用他们尝试的相同路径。
例如:
用户访问:http://new.test.com/department/something.php
这会产生404,所以我想在这里自动发送它们: http://old.test.com/department/something.php
我可以使用.htaccess执行此操作,还是应该在new.test.com上的自定义404页面上使用PHP脚本来执行重定向?
答案 0 :(得分:1)
您可以在新网站的DOCUMENT_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]
答案 1 :(得分:0)
您只需使用ErrorDocument指令:
ErrorDocument 404 http://old.test.com/department/something.php
您可以使用本地路径并发送404状态代码。但是如果你给出一个像上面这样的绝对URI,就会发送302状态代码(临时重定向)。
但这仅适用于固定目标路径。
但您可以分两步使用ErrorDocument选择404请求和以下重定向来发送目标网址:
ErrorDocument 404 /404_to_oldsite/
RewriteEngine On
RewriteRule ^/404_to_oldsite/ http://master.example.com{REDIRECT_REQUEST_URI} [R,L]
这需要启用模块mod_rewrite
。
如果调用某个页面但找不到该页面,则会将其重定向到本地网址,然后将此本地网址重定向到您的旧网站。浏览器应该从那里获取页面。