gpt4 book ai didi

php - 使用 htaccess 的 CakePHP 子域

转载 作者:IT王子 更新时间:2023-10-29 00:04:15 26 4
gpt4 key购买 nike

我在其他应用程序的 htaccess 文件中使用以下规则将用户从文件夹重定向到子域,但在访问该子域时从该文件夹加载内容。

# REWRITE SUBDOMAIN TO FOLDER
RewriteCond %{HTTP_HOST} ^admin\.cameron\.com$
RewriteRule !^admin/? admin%{REQUEST_URI} [NC,L]

# REWRITE FOLDER TO SUBDOMAIN
RewriteCond %{THE_REQUEST} \s/admin/([^\s]*) [NC]
RewriteRule ^ http://admin.cameron.com/%1 [R=301,L]

所以如果我去:http://cameron.com/admin 我最终会在 http://admin.cameron.com/

但是内容是从http://cameron.com/admin加载的

然而,这对 CakePHP 2.x 不起作用,因为它的重写显然...

在我位于 /app/webroot 的 htaccess 文件中,我有:

<IfModule mod_rewrite.c>

RewriteEngine On

# CAKEPHP RULES
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

# REWRITE SUBDOMAIN TO FOLDER
RewriteCond %{HTTP_HOST} ^admin\.cameron\.com$
RewriteRule !^admin/? admin%{REQUEST_URI} [NC,L]

# REWRITE FOLDER TO SUBDOMAIN
RewriteCond %{THE_REQUEST} \s/admin/([^\s]*) [NC]
RewriteRule ^ http://admin.cameron.com/%1 [R=301,L]

</IfModule>

如果我去:http://cameron.com/admin 它只是尝试加载 AdminController 而不会重定向你,如果我去:http://admin.cameron.com/ 我刚收到 500 内部服务器错误。

关于如何使它适用于 CakePHP 的任何想法?

最佳答案

CakePHP 和几乎任何其他 PHP 框架都会解析 $_SERVER['REQUEST_URI'] 以便将您的请求路由到特定 Controller

更多信息在这里:https://github.com/cakephp/cakephp/blob/2.6/lib/Cake/Network/CakeRequest.php#L230 ,

因此,您只需为重定向设置相同的请求 URI 参数,即可让应用正常运行。

对于您的旧位置,它是“/admin”,对于新位置,它应该是相同的,但是您不想传递它,所以最好像这样更改任务:

“当您转到 admin.site.com 时,您将被重定向到 site.com/admin”。

这可以像这样简单地完成:

RewriteRule ^([^.]+)\.example\.com http://example.com/$1

这不是规则的工作示例,因为您还需要重写子域的请求 URI 以使一切正常,这取决于您的要求,但可以像这样:

RewriteRule ^([^.]+)\.example\.com(.*) http://example.com/$1/$2

UPD:实例

$ cat app/webroot/.htaccess 
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteCond %{HTTP_HOST} ^admin.example.com
RewriteRule ^(.*)$ http://example.com/admin/$1 [P,L,NC]
</IfModule>

关于php - 使用 htaccess 的 CakePHP 子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com