花了一段时间对此进行了搜索并进行了大量搜索。找到了几乎涵盖我需要的问题和答案,但并不完全......
简而言之:尝试在用户收到404时将用户重定向到外部域,保留URI,仅使用.htaccess 。
考虑:
必需的行为:
示例1:
- 用户请求:www.example.com/no/Page
- 服务器响应404
- 用户被重定向到:www.newdomain.com/no/Page
示例2:
- 用户请求:www.example.com/url;=xyz
- 服务器响应404
- 用户被重定向到:www.newdomain.com/url;=xyz
是否可以使用.htaccess实现 ?
尝试以下方面的内容:
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]
这主要是有效的,但只有硬编码的查询字符串...才能动态地包含它。
任何想法如何实现这一点(如果有的话)?
答案 0 :(得分:2)
可以使用ErrorDocument
完成此操作,例如
ErrorDocument 404 http://www.newdomain.com%{REQUEST_URI}
不幸的是,这仅适用于Apache> = 2.4.13
从2.4.13开始,可以在指令中使用表达式语法来生成动态字符串和URL。