Apache URL 用多个参数替换重写
Apache URL rewrite with multiple param replacement
需要以下 apache 重写条件方面的帮助:
原文URL:
http://www.test.foo.com/SSO/login?service=http%3A%2F%2Fwww.bar.com%2Fc%2Fportal%2Flogin
我需要的是:
https://www.test.foo.com/SSO/login?service=http%3A%2F%2Fwww.test.foo.com%2Fc%2Fportal%2Flogin
以下是我的配置:
<VirtualHost *:80>
ServerName www.test.foo.com
ServerAdmin admin@www.test.foo.com
ServerAlias www.test.foo.com
LogLevel warn
ErrorLog /var/log/apache2/www.test.foo.com.error.log
CustomLog /var/log/apache2/www.test.foo.com.access.log combined
ProxyRequests On
ProxyVia On
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{QUERY_STRING} ^(.*?)www\.bar\.com(.*)$ [NC]
RewriteRule ^/?(SSO/.*)$ https://www.test.foo.com/?%1www.test.foo.com%2 [R,NE,L]
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
</VirtualHost>
通过以上配置,我可以从 http 重定向到 https。现在问题出在请求 header 位置,我仍然得到
http://www.test.foo.com/SSO/login?service=http%3A%2F%2Fwww.bar.com%2Fc%2Fportal%2Flogin
任何人都可以帮助我或建议我重写条件吗?
您可以在 RewriteEngine On
行下方插入此规则:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{QUERY_STRING} ^(.*?)www\.bar\.com(.*)$ [NC]
RewriteRule ^/?(SSO/.*)$ https://www.test.foo.com/?%1www.test.foo.com%2 [R,NE,L]
需要以下 apache 重写条件方面的帮助:
原文URL:
http://www.test.foo.com/SSO/login?service=http%3A%2F%2Fwww.bar.com%2Fc%2Fportal%2Flogin
我需要的是:
https://www.test.foo.com/SSO/login?service=http%3A%2F%2Fwww.test.foo.com%2Fc%2Fportal%2Flogin
以下是我的配置:
<VirtualHost *:80>
ServerName www.test.foo.com
ServerAdmin admin@www.test.foo.com
ServerAlias www.test.foo.com
LogLevel warn
ErrorLog /var/log/apache2/www.test.foo.com.error.log
CustomLog /var/log/apache2/www.test.foo.com.access.log combined
ProxyRequests On
ProxyVia On
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{QUERY_STRING} ^(.*?)www\.bar\.com(.*)$ [NC]
RewriteRule ^/?(SSO/.*)$ https://www.test.foo.com/?%1www.test.foo.com%2 [R,NE,L]
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
</VirtualHost>
通过以上配置,我可以从 http 重定向到 https。现在问题出在请求 header 位置,我仍然得到
http://www.test.foo.com/SSO/login?service=http%3A%2F%2Fwww.bar.com%2Fc%2Fportal%2Flogin
任何人都可以帮助我或建议我重写条件吗?
您可以在 RewriteEngine On
行下方插入此规则:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{QUERY_STRING} ^(.*?)www\.bar\.com(.*)$ [NC]
RewriteRule ^/?(SSO/.*)$ https://www.test.foo.com/?%1www.test.foo.com%2 [R,NE,L]