CakePHP subdominios con htaccess
apache .htaccess (2)
CakePHP y casi cualquier otro marco de PHP analizan $ _SERVER [''REQUEST_URI''] para dirigir su solicitud a un controlador en particular
más información aquí: https://github.com/cakephp/cakephp/blob/2.6/lib/Cake/Network/CakeRequest.php#L230 ,
por lo que simplemente necesita tener los parámetros URI de solicitud SAME para que su redireccionamiento funcione correctamente.
Para su ubicación anterior era "/ admin", para la nueva ubicación debería ser la misma, pero no desea pasarla, por lo que es mejor cambiar la tarea de esta manera:
"Cuando vaya a admin.site.com, será redirigido a site.com/admin".
Esto se puede hacer simplemente así:
RewriteRule ^([^.]+)/.example/.com http://example.com/$1
No es un ejemplo práctico de regla porque también necesita volver a escribir el URI de solicitud del subdominio para que todo funcione y depende de sus requisitos, pero puede ser algo así:
RewriteRule ^([^.]+)/.example/.com(.*) http://example.com/$1/$2
UPD: ejemplo real
$ 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>
He usado las siguientes reglas en mi archivo htaccess en otras aplicaciones para redirigir a los usuarios de una carpeta a un subdominio, pero cargar el contenido de esa carpeta al acceder a ese subdominio.
# 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]
Entonces, si voy a: http://cameron.com/admin
, termino en http://admin.cameron.com/
Pero el contenido se carga desde http://cameron.com/admin
Sin embargo, esto no funciona para CakePHP 2.x debido a su reescritura aparentemente ...
En mi archivo htaccess en /app/webroot
tengo:
<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>
Si voy a: http://cameron.com/admin
, solo intenta cargar el AdminController y no lo redirige, y si voy a: http://admin.cameron.com/
, solo obtengo un 500 Internal Error del Servidor.
¿Alguna idea sobre cómo hacer que esto funcione para CakePHP?
<IfModule mod_rewrite.c>
#standard cake htaccess stuff
...
RewriteCond %{HTTP_HOST} ^profile/.thechatfun/.com$ [NC]
RewriteRule ^(.*)$ http://www.thechatfun.com/users/profile/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^chat/.thechatfun/.com$ [NC]
RewriteRule ^(.*)$ http://www.thechatfun.com/chats/index/$1 [R=301,L]
</IfModule>