htaccess子域脚本重定向

时间:2011-04-26 12:14:54

标签: .htaccess

我在理解htaccess重定向的工作方式时遇到了问题:

我可以进行后台重定向,以便用户看到[subdomain].mydomain.com/?p1=v1...,但是服务器在没有实际重定向的情况下提供mydomain.com/?sid=[subdomain]&p1=v1...,只有服务器端。

这是我到目前为止所做的,它不起作用:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com/(.+) [NC]
RewriteRule (.+) localhost.com/index.php?supplier=$1&$2 [L]

我没有改变任何事情。

修改

我得到了一半的工作:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com$ [NC]
RewriteRule /(.+)$ http://localhost\.com/eshop/?supplier=%1 [QSA,P]

现在我收到了一个很好的禁止警告,如果我删除了P标记,它会重定向,因此网址会显示http://localhost.com/eshop/?supplier=[subdomain]&p1=v1...,但用户仍必须看到http://[subdomain].localhost.com/eshop/?p1=v1...,现在该如何删除那个被禁止的部分...

(请注意,我的网站实际上位于 www 下的文件夹中,但 eshop 部分将会消失。)

编辑2

IT工作,因为 clmarquart 说我需要mod_proxy。在WAMP上,您必须通过单击托盘图标 - > Apache-> Apache模块启用它,并启用proxy_module和proxy_http_module,无论它们是什么。

1 个答案:

答案 0 :(得分:0)

使用“P”标志强制使用内部代理。使用代理模块时,RewriteURL目标必须是完整URL。使用“%1”表示“%9”作为RewriteCond表达式的捕获数据,使用“$ 1”表示“$ 9”作为RewriteRule表达式中捕获的数据。

以下应该更好(不测试)

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com$ [NC]
RewriteRule (.+) http://localhost.com/index.php?supplier=%1&$1 [L,P]