将所有请求重定向到Index.html

时间:2018-08-14 10:00:11

标签: apache mod-rewrite

如果不是来自AJAX的请求,我想将对我的网站的所有请求重定向到index.html。除了重定向之外,我还想将请求URI作为get参数附加到index.html,例如,如果有人访问http://example.com/something.html,则应该将该人重定向到http://example.com/?origin=something.html。为此,我在.htaccess文件中添加了以下代码

RewriteEngine On

RewriteCond %{HTTP:X-Requested-With} !=XMLHttpRequest
RewriteCond %{HTTP:X-REQUESTED-WITH} !^(XMLHttpRequest)$
RewriteCond %{REQUEST_URI} !^/(index.html)?$ [NC]

RewriteRule ^/.*.html$ /index.html?origin=%{REQUEST_URI} [R=301,L,NC]

但是,它不会按预期重定向任何请求。我在Apache / 2.4.33,Ubuntu 16.04上。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

正如CBroe所指出的那样,我之所以面临这个问题,是因为.htaccess的上下文已从/中删除了最初的%{REQUEST_URI},而这通常是RewriteRule的条件部分。因此,解决方案仅需将RewriteRule更改为:

RewriteRule ^(.*).html$ /index.html?origin=%{REQUEST_URI} [R=301,L,NC]