php apache .htaccess cakephp mod-rewrite

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>