您好我有一个带有SSL证书的负载均衡器和两个网络服务器。 loadbalancer将HTTP流量移植到端口80,将HTTPS流量移植到端口81.使用 HTTP:X-Forwarded-Proto 标头,使用apache重写重定向所有对HTTP的请求。这工作正常,但现在我们需要忽略两个特定的REQUEST_URI,但我似乎无法按预期工作。
应用程序正在使用基本的MVC结构,因此所有URIS都被发送到index.php文件,但是当我尝试确保两个URL仅在HTTP上时,我尝试过的组合要么在路由中结束,要么发现或陷入重定向循环。
以下是我尝试过的重写和组合。
RewriteEngine On
# This causes route to not be found
#RewriteCond %{REQUEST_URI} ^/uritoignore/one$ [OR]
#RewriteCond %{REQUEST_URI} ^/seconduritoignore/two$
#RewriteRule ^(.*)$ http://%{HTTP_HOST}/index.php?url=$1 [QSA,L]
# Continuous redirect loop
#RewriteCond %{REQUEST_URI} ^/uritoignore/one$
#RewriteRule ^(.*)$ http://%{HTTP_HOST}/uritoignore/one [QSA,L]
# Redirect rest of traffic to HTTPS if not already
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
非常感谢任何建议。
由于
答案 0 :(得分:0)
最后,我意识到脸上盯着我的是什么。我只需要从重定向中排除路径,并且还需要index.php来阻止它在最后重写时被重定向。最终配置如下:
RewriteEngine On
# Redirect rest of traffic to HTTPS if not already
RewriteCond %{REQUEST_URI} !^/uritoignore/one
RewriteCond %{REQUEST_URI} !^/seconduritoignore/two
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]