【问题标题】:Apache rewrite condition goes to infinite loopApache重写条件进入无限循环
【发布时间】:2016-03-08 12:03:41
【问题描述】:

我有一个 tomcat 有两个名为“app1”和“app2”的应用程序。 我已经使用以下 v.host 配置为 tomcat 安装了 Apache Web 服务器。

ServerName mywebapp.com
ServerAlias mywebapp.com

ProxyRequests On
ProxyVia On

<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>

RewriteEngine On
Options +FollowSymLinks

RewriteEngine on
RewriteCond %{HTTP_HOST} ^mywebapp.com$
RewriteRule ^(.*)$ http://mywebapp.com/app1$1 [R=301,L]

ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/

我可以使用以下 URL 访问我的两个网络应用程序。

  • mywebapp.com/app1
  • mywebapp.com/app2

我需要一个默认重定向规则,如果用户点击“mywebapp.com”,它会重定向到“mywebapp.com/app1

我试过关注一个,但没有运气。它进入无限循环。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^mywebapp.com$
RewriteRule ^(.*)$ http://mywebapp.com/app1$1 [R=301,L]

谁能给我建议我需要做的改变?

【问题讨论】:

  • 你为什么要将你的域重定向到它自己?
  • B'Coz 默认情况下,我需要我的“app1”作为 mywebapp.com 上的默认网络应用程序。这就是我将 mywebapp.com 重定向到 mywebapp.com/app1 的原因。

标签: apache .htaccess tomcat mod-rewrite


【解决方案1】:

你可以使用这条规则:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^mywebapp.com$
RewriteRule ^/?((?!app1).*)$ http://mywebapp.com/app1/$1 [NC,L,R]

【讨论】:

  • @startkeen :添加这些行之后。我正在登陆 Apache 默认页面。
【解决方案2】:

试试这个:

RewriteEngine on 
RewriteCond %{HTTP_HOST}%{REQUEST_URI} = mywebapp.com
RewriteRule .* /app1 [R=302]

重定向 301 是永久性的。除非您希望它是永久的,否则不要使用它。 重定向 302 是临时的,是默认的。

【讨论】:

  • 您正在使用 %{REQUEST_URI} 变量匹配 Http_host。
猜你喜欢
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多