Cam*_*ron 19 php apache .htaccess mod-rewrite cakephp
我在其他应用程序的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]
Run Code Online (Sandbox Code Playgroud)
所以,如果我去:http://cameron.com/admin
我最终http://admin.cameron.com/
但内容是从中加载的 http://cameron.com/admin
但是这对CakePHP 2.x来说不起作用,因为它的重写显然......
在我的htaccess文件中/app/webroot
我有:
<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>
Run Code Online (Sandbox Code Playgroud)
如果我去:http://cameron.com/admin
它只是尝试加载AdminController并且不重定向你,如果我去:http://admin.cameron.com/
我只是得到500内部服务器错误.
有关如何使CakePHP正常工作的任何想法?
CakePHP 和几乎所有其他 PHP 框架都会解析 $_SERVER['REQUEST_URI'] 以便将您的请求路由到特定控制器
更多信息在这里: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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2097 次 |
最近记录: |