使用.htaccess将404重定向到外部域,保留URI
在这上面花了一段时间,搜索了很多。找到的问题和答案几乎涵盖了我需要的,但不完全 简而言之:当用户收到404时,尝试将其重定向到外部域,保留URI,仅使用.htaccess 考虑事项:使用.htaccess将404重定向到外部域,保留URI,.htaccess,redirect,mod-rewrite,http-status-code-404,errordocument,.htaccess,Redirect,Mod Rewrite,Http Status Code 404,Errordocument,在这上面花了一段时间,搜索了很多。找到的问题和答案几乎涵盖了我需要的,但不完全 简而言之:当用户收到404时,尝试将其重定向到外部域,保留URI,仅使用.htaccess 考虑事项: Apache不知道服务器上的文件,它从CMS动态请求它们 请求的URI中可能包含时髦的字符,例如“;”“=” 需要避免任何服务器端脚本(例如php) 所需行为: 用户请求一个URL 服务器以404响应 用户被透明地重定向到外部域,并保留URI 例1: 用户请求:www.example.com/no/Pag
- Apache不知道服务器上的文件,它从CMS动态请求它们
- 请求的URI中可能包含时髦的字符,例如“;”“=”
- 需要避免任何服务器端脚本(例如php)
- 用户请求一个URL
- 服务器以404响应
- 用户被透明地重定向到外部域,并保留URI
- 用户请求:www.example.com/no/Page
- 服务器以404响应
- 用户被重定向到:www.newdomain.com/no/Page
- 用户请求:www.example.com/url=xyz
- 服务器以404响应
- 用户被重定向到:www.newdomain.com/url=xyz
RewriteEngine On
ErrorDocument 404 /404.html?u=/the/Requested/URI
RewriteCond %{REQUEST_URI} ^/404.html [NC]
RewriteCond %{QUERY_STRING} ^u=(.*)
RewriteRule (.*) http://www.newdomain.com%1? [NC,NE,L,R=301,E=nocache:1]
这主要起作用,但仅适用于硬编码的查询字符串。。。无法动态包含它
如何实现这一点(如果有的话)有什么想法吗 这可以通过,例如
不幸的是,这只适用于Apache>=2.4.13
从2.4.13开始,可以在指令内部使用表达式语法来生成动态字符串和URL
ErrorDocument 404 http://www.newdomain.com%{REQUEST_URI}