如何使用 URL 重写设置请求代理
How to setup request proxy using URL rewriting
我有一个电子商务网站位于:
当客户点击 signin link 时,浏览器被重定向到另一个域,以便进行身份验证:
我正在尝试将 http://dev.gworks.mobi/*
重写为 http://frock.gworks.mobi:8080/openam/*
,而无需重定向。
我已经在 dev.gworks.mobi
站点的 .htaccess
中尝试过:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/openam(.*)$ [NC]
RewriteRule ^(.*)$ http://frock.gworks.mobi:8080/ [P,L]
</IfModule>
但是当我访问 http://dev.gworks.mobi/openam
时,它显示 404 page not found
页面。
任何人都可以帮助我实现我的用例吗?
试试这个:
RewriteEngine on
RewriteBase /
# Make sure it's not an actual file being accessed
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Match the host
RewriteCond %{HTTP_HOST} ^dev\.gworks\.mobi
# Rewrite the request if it starts with "openam"
RewriteRule ^openam(.*)$ http://frock.gworks.mobi:8080/ [L,QSA]
这会将对 dev.gworks.mobi/openam
的所有请求重写为 frock.gworks.mobi:8080
。
如果您想以某种方式屏蔽 URI,使访问者无法看到她正在访问身份验证应用程序,则需要在 :[=22] 位置添加 P
flag. Please note that it needs Apache's mod_proxy
module =]
RewriteRule ^openam(.*)$ http://frock.gworks.mobi:8080/ [P,L,QSA]
随意删除 L
标志,如果它不是最后的重写规则。有关详细信息,请参阅 RewriteRule Flags。
404
如果一切就绪但您仍然收到 404 错误,请确保目标 URL 没有首先抛出 404 错误。
其次,使用正确的引荐来源网址集检查您是否仍然遇到错误。如果引荐来源网址设置不正确,它可能会以抛出 404 的方式设计。如果是这种情况,我怀疑,您需要使用 R
标志并重定向而不是代理请求。
我想到的最后一件事是,某些 Web 应用程序并不是以计算 URI 地址的方式构建的。主机以及端口号可能在配置文件中的某处进行了硬编码。确保身份验证应用能够 运行 来自另一个 URL 而无需编辑配置。
测试
您可以test the rewriterule在线:
我有一个电子商务网站位于:
当客户点击 signin link 时,浏览器被重定向到另一个域,以便进行身份验证:
我正在尝试将 http://dev.gworks.mobi/*
重写为 http://frock.gworks.mobi:8080/openam/*
,而无需重定向。
我已经在 dev.gworks.mobi
站点的 .htaccess
中尝试过:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/openam(.*)$ [NC]
RewriteRule ^(.*)$ http://frock.gworks.mobi:8080/ [P,L]
</IfModule>
但是当我访问 http://dev.gworks.mobi/openam
时,它显示 404 page not found
页面。
任何人都可以帮助我实现我的用例吗?
试试这个:
RewriteEngine on
RewriteBase /
# Make sure it's not an actual file being accessed
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Match the host
RewriteCond %{HTTP_HOST} ^dev\.gworks\.mobi
# Rewrite the request if it starts with "openam"
RewriteRule ^openam(.*)$ http://frock.gworks.mobi:8080/ [L,QSA]
这会将对 dev.gworks.mobi/openam
的所有请求重写为 frock.gworks.mobi:8080
。
如果您想以某种方式屏蔽 URI,使访问者无法看到她正在访问身份验证应用程序,则需要在 :[=22] 位置添加 随意删除 如果一切就绪但您仍然收到 404 错误,请确保目标 URL 没有首先抛出 404 错误。 其次,使用正确的引荐来源网址集检查您是否仍然遇到错误。如果引荐来源网址设置不正确,它可能会以抛出 404 的方式设计。如果是这种情况,我怀疑,您需要使用 我想到的最后一件事是,某些 Web 应用程序并不是以计算 URI 地址的方式构建的。主机以及端口号可能在配置文件中的某处进行了硬编码。确保身份验证应用能够 运行 来自另一个 URL 而无需编辑配置。 您可以test the rewriterule在线:P
flag. Please note that it needs Apache's mod_proxy
module =]
RewriteRule ^openam(.*)$ http://frock.gworks.mobi:8080/ [P,L,QSA]
L
标志,如果它不是最后的重写规则。有关详细信息,请参阅 RewriteRule Flags。404
R
标志并重定向而不是代理请求。测试