我有一个位于以下网站的电子商务网站:
当客户点击登录链接时,浏览器会被重定向到另一个域,以便进行身份验证:
我尝试将http://dev.gworks.mobi/*
重写为http://frock.gworks.mobi:8080/openam/*
,而不重定向。
我已经在.htaccess
网站的dev.gworks.mobi
中尝试了此操作:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/openam(.*)$ [NC]
RewriteRule ^(.*)$ http://frock.gworks.mobi:8080/$1 [P,L]
</IfModule>
但是当我访问http://dev.gworks.mobi/openam
时,它会显示404 page not found
页。
有人可以帮助我实现我的用例吗?
答案 0 :(得分:1)
试试这个:
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/$1 [L,QSA]
这会将对dev.gworks.mobi/openam
的所有请求重写为frock.gworks.mobi:8080
。
如果要以访问身份验证应用程序不可见的方式屏蔽URI,则需要添加P
flag。 请注意,它需要Apache的mod_proxy
module :
RewriteRule ^openam(.*)$ http://frock.gworks.mobi:8080/$1 [P,L,QSA]
如果它不是最后一次重写规则,请随意删除L
标志。有关详细信息,请参阅RewriteRule Flags。
如果一切就绪并且您仍然遇到404错误,请确保目标网址首先不会引发404错误。
其次,检查您是否仍然使用正确的引用URI设置获得错误。如果未正确设置引荐来源,它可能会以抛出404的方式设计。如果是这种情况,我怀疑,您需要使用R
标志并重定向而不是代理请求。
我想到的最后一件事,一些webapps并不是以找出URI地址的方式构建的。主机以及端口号可能在配置文件中的某处硬编码。确保可以从其他URL运行身份验证应用程序,而无需编辑配置。
您可以在线test the rewriterule: