我要将所有传入查询重定向到新域,/backend除外
我在我的.htaccess里有这个,除了/后端,一切都正常。我试了几个组合,就是不起作用。
我担心/后端是虚拟地址....
我能做什么呢?
以下是代码:
RewriteCond %{HTTP_HOST} ^example.de$ [OR]
RewriteCond %{HTTP_HOST} ^www.example.de$
RewriteCond %{REQUEST_URI} !^/backend/$
RewriteRule (.*)$ https://www.bing.de/ [R=302,L]
请帮忙谢谢帕特里克
1条答案
按热度按时间slsn1g291#
我担心/后端是虚拟地址....
在这种情况下,您很可能有其他mod_rewrite指令将请求重写到前端控制器(例如
index.php
)-这就是问题所在。(原始请求的URL),因此重写引擎在第一遍时跳过该规则,一旦请求被重写到前端控制器(例如,index.php
),重写引擎就开始第二遍,这导致规则被成功执行,因为URL现在是/index.php
(或者无论前端控制器是什么)而不是/backend/
。您需要:
.htaccess
文件,因此我暂时不考虑这种方法。)REQUEST_URI
服务器变量会随着请求的重写而修改。)但是,我假设您的
/backend/
页面也链接到静态资产(如图像、CSS、JS)?在这种情况下,您还需要为页面使用的任何其他静态资产设置例外,否则这些静态资产也将被重定向。为了这个示例,我假设您所有的静态资产都位于/assets
子目录中。请尝试在根
.htaccess
文件顶部附近执行以下操作:请注意,此规则必须在重写到前端控制器之前执行。
THE_REQUEST
服务器变量包含HTTP请求头的第一行,重要的是,它不会随着请求的重写而改变。它包含GET /backend/ HTTP/1.1
的字符串(包含请求 * 方法 *、URL 和 * 协议 *)。如果没有外部资产,则将
RewriteRule
pattern 从!^assets/
更改为^
,以匹配所有内容。