如何在 Apache 中重写 URL 路径以避免无限循环

How to rewrite URL paths in Apache to avoid infinite loop

我正在尝试在我的 VirtualHost 上设置一些重写规则。我尝试将根“/”重定向到特定路径“/mypath”。一个路径 '/foo' 到根 '/' 而不进入循环。

RewriteEngine On
RewriteCond %{HTTP_HOST}%{REQUEST_URI} =server.domain.com/foo
RewriteRule /foo / [R,E=DEV:true]
RewriteCond %{HTTP_HOST} =server.domain.com
RewriteCond %{ENV:DEV} !^true$
RewriteRule ^/$ /mypath [R]

我希望如果用户要求:

server.domain.com/foo he/she 转到 server.domain.com

如果用户要求:

server.domain.com he/she 转到 server.domain.com/mypath

正如您在我的代码中看到的那样,我设置了一个环境变量来检查是否必须重写,但它不起作用。

使用两个域解决了这个问题。

我们创造: server.domain.comserver-aux.domain.com

重写规则如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^server-aux.domain.com$
RewriteRule ^(.*)$ https://server.domain.com/foo [R=301]

现在 server.domain.com 转到 /server-aux.domain.com 转到 /foo