Problema:¿REQUEST_URI no se reemplaza al utilizar APACHE RewriteRule?
Am usando Kohana/PHP para desarrollar un sitio web alojado por otras empresas. Obtengo que el cliente ingrese una entrada CNAME en su servidor DNS para señalar mi dominio. P.ej. http://invites.somecompany.com apunta a http://www.mydomain.com.
Por lo tanto, la % {} HTTP_HOST entrada en mi servidor Apache es 'invites.somecompany.com'
quiero reescribir http://invites.somecompany.com/invite a http://www.mydomain.com/invites/invite
Aunque Apache parece estar haciendo eso, $ _SERVER ['REQUEST_URI'] sigue siendo "/". El problema es que Kohana usa $ _SERVER ['REQUEST_URI'] para enrutar la solicitud al código del controlador apropiado. En este caso, lo enruta al controlador de índice base, en lugar del controlador 'invita a'.
Datos:
las directivas de Apache mod_rewrite estoy usando (en el archivo .htaccess): -
RewriteCond %{HTTP_HOST} !^www.mydomain.com$
RewriteCond %{REQUEST_URI} !.*invites.*
RewriteRule ^(.*)$ invites/$1
# For Kohana
RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L]
en el index.php, hago:
var_dump($_SERVER);
y consigo:
'REQUEST_URI' => string '/',
'QUERY_STRING' => string 'kohana_uri=invites/index.php&kohana_uri=invites/invite'
'REDIRECT_QUERY_STRING' => string 'kohana_uri=invites/invite'
¿Entonces el mod_rewrite no modifica el REQUEST_URI?
Necesidad:
'REQUEST_URI' => 'invites/invite',
'QUERY_STRING' => string 'kohana_uri=invites/invite',
¿Cómo consigo que?
====================== Editar
de reescritura de entradas de registro: -
strip per-dir prefix: /Users/project/invite -> invite
applying pattern '^(?:application|modules|system)\b.*' to uri 'invite'
strip per-dir prefix: /Users/project/invite -> invite
applying pattern '\.git' to uri 'invite'
strip per-dir prefix: /Users/project/invite -> invite
applying pattern '^(.*)$' to uri 'invite'
rewrite invite -> invites/invite
add per-dir prefix: invites/invite -> /Users/project/invites/invite
strip per-dir prefix: /Users/project/invites/invite -> invites/invite
applying pattern '.*' to uri 'invites/invite'
rewrite invites/invite -> index.php?kohana_uri=invites/invite
add per-dir prefix: index.php -> /Users/project/index.php
strip document_root prefix: /Users/project/index.php -> /index.php
internal redirect with /index.php [INTERNAL REDIRECT]
strip per-dir prefix: /Users/project/index.php -> index.php
applying pattern '^(?:application|modules|system)\b.*' to uri 'index.php'
strip per-dir prefix: /Users/project/index.php -> index.php
applying pattern '\.git' to uri 'index.php'
strip per-dir prefix: /Users/project/index.php -> index.php
applying pattern '^(.*)$' to uri 'index.php'
rewrite index.php -> invites/index.php
add per-dir prefix: invites/index.php -> /Users/project/invites/index.php
strip per-dir prefix: /Users/project/invites/index.php -> invites/index.php
applying pattern '.*' to uri 'invites/index.php'
rewrite invites/index.php -> index.php?kohana_uri=invites/index.php
add per-dir prefix: index.php -> /Users/project/index.php
initial URL equal rewritten URL: /Users/project/index.php [IGNORING REWRITE]
Eso es cómo funciona el mod_rewrite. – zerkms
hmmmmmmmmmmmmmm – Ajoy