Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 如何在PHP中通过HTACCESS文件获取动态URL?_.htaccess_Dynamic Url - Fatal编程技术网

.htaccess 如何在PHP中通过HTACCESS文件获取动态URL?

.htaccess 如何在PHP中通过HTACCESS文件获取动态URL?,.htaccess,dynamic-url,.htaccess,Dynamic Url,我需要在url中使用动态子域。 我的PHP应用程序将为用户打开帐户 我登录屏幕的URL将为 http://example.dev/app/login 登录后,用户将转到以下部分 http://example.dev/app/section/account_name=ram 我当前的域是example.dev 我的要求是在域名中加入帐户名。我的URL应该如下所示 http://ram.exmaple.dev/app/section 同样,如果我的帐户名是sundar,那么我的URL应该是这样

我需要在url中使用动态子域。 我的PHP应用程序将为用户打开帐户

我登录屏幕的URL将为

http://example.dev/app/login
登录后,用户将转到以下部分

http://example.dev/app/section/account_name=ram
我当前的域是example.dev

我的要求是在域名中加入帐户名。我的URL应该如下所示

http://ram.exmaple.dev/app/section
同样,如果我的帐户名是sundar,那么我的URL应该是这样的

http://sundar.example.dev/app/section
我知道使用.HTACCESS可以实现这一点。我试过了,但没能正确地得到它

RewriteCond%{HTTP_HOST}^([a-z-]+).example.dev$[NC]

重写规则(.*)$/app/section/?帐户\u名称=%1[QSA]

以上是正确的吗

要点: 在htaccess结束时,我必须调用一个控制器文件


RewriteRule^(.*)$example\u controller.php

我知道您根本不希望example\u controller.php中有任何内容

PHP访问原始URL时使用:$\u SERVER[“REDIRECT\u URL”]它将包含原始请求地址,而不是“最后一个”请求地址

我能想到的唯一解决方案是反向代理。您可以使用.htaccess创建代理请求(使用[P]指令)将您自己的主机发送到所需的URL。这样,PHP会将该URL视为重定向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_代理。我不确定P和QSA指令是如何协同工作的,试试看。

你能给我举一个这个代理请求的例子吗?是的,我添加了一个(虽然没有测试)。