如果不是来自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上。我在做什么错了?
答案 0 :(得分:0)
正如CBroe所指出的那样,我之所以面临这个问题,是因为.htaccess的上下文已从/
中删除了最初的%{REQUEST_URI}
,而这通常是RewriteRule
的条件部分。因此,解决方案仅需将RewriteRule
更改为:
RewriteRule ^(.*).html$ /index.html?origin=%{REQUEST_URI} [R=301,L,NC]