2011-03-01 80 views
0

我需要在url中使用动态子域。 我的PHP应用程序将为用户开放帐户。如何通过PHP中的HTACCESS文件获取动态URL?

我的登录画面URL将

http://example.dev/app/login 

在登录后,用户会去下一节

http://example.dev/app/section/account_name=ram 

我现在域example.dev

我的要求将域名中的帐户名称。我的URL应该像下面

http://ram.exmaple.dev/app/section 

同样,如果我的帐户名是孙大信手段,我的网址应该是这样的

http://sundar.example.dev/app/section 

我知道这是可能使用的.htaccess。我试过,但我不能正确地得到它

的RewriteCond%{HTTP_HOST} ^([AZ - ] +)(。*)example.dev $ [NC]

重写规则$ /应用/部分/?account_name =%1 [QSA]

以上是正确的吗?

重要点: 在htaccess的结尾,我必须调用一个控制器文件。

重写规则^(。*)$ example_controller.php

回答

1

我知道你想在example_controller.php没有cahnge可言。

PHP访问原始URL:$ _SERVER [“REDIRECT_URL”]它将包含原始请求地址,而不是“最后一个”请求地址。

我能想到的唯一解决方案是反向代理。您可以使用.htaccess创建代理请求(使用[P]指令)到您自己的主机以获得所需的URL。这样PHP将会看到该URL为REDIRECT_URL,因为这是请求的原始URL。

RewriteCond %{HTTP_HOST} ^([a-z-]+).example.dev$ [NC] 
RewriteRule (.*)$ http://example.dev/app/section/?account_name=%1[PQSA] 

RewriteRule ^(.*)$ example_controller.php 

当然你必须启用mod_proxy。我不确定P和QSA指令如何工作,请尝试一下。

+0

你能举出这个代理请求的例子吗? – mosivagan 2011-03-02 07:51:34

+0

是的,我加了一个(虽然没有测试过)。 – vbence 2011-03-02 11:36:42

相关问题