redirigir - Portar las reglas de reescritura de htaccess a las configuraciones de hiphop-php
redirect php htaccess (3)
Tengo un proyecto CodeIgniter que requiere volver a escribir reglas para navegar por controladores / vistas y cosas por el estilo. He instalado correctamente hiphop-php en Ubuntu 12.04 y funciona perfectamente, incluso con la instalación de WordPress de ejemplo y las reglas de reescritura proporcionadas en su sitio.
Sin embargo, necesito descubrir las reglas de reescritura adecuadas que funcionarán con la configuración de CodeIgniter index.php / controller y no he tenido demasiada suerte.
Aquí hay un archivo de configuración de ejemplo de hiphop-php para la reescritura de WP:
VirtualHost {
* {
Pattern = .*
RewriteRules {
dirindex {
pattern = ^/(.*)/$
to = $1/index.php
qsa = true
}
}
}
}
StaticFile {
FilesMatch {
* {
pattern = .*/.(dll|exe)
headers {
* = Content-Disposition: attachment
}
}
}
Y aquí hay un ejemplo de archivo mod_rewrite CodeIgniter para Apache:
http://www.farinspace.com/codeigniter-htaccess-file/
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
### Canonicalize codeigniter URLs
# If your default controller is something other than
# "welcome" you should probably change this
RewriteRule ^(welcome(/index)?|index(/.php)?)/?$ / [L,R=301]
RewriteRule ^(.*)/index/?$ $1 [L,R=301]
# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
###
# Removes access to the system folder by users.
# Additionally this will allow you to create a System.php controller,
# previously this would not have been possible.
# ''system'' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn''t true it sends the
# request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Básicamente, todo lo que necesito para volver a escribir es enrutar las solicitudes correctamente con el controlador index.php de CodeIgniter, que parece ser lo que hace la última parte de las reglas de reescritura de apache. El resto puedo hackear juntos después de ver algunos ejemplos.
¡Gracias un montón!
Como generalmente es el caso, pensé que esto saldría por autoaprendizaje y algunos empujaron en la dirección correcta de la respuesta de Trip anterior. Escribí cómo usar nginx como proxy y cómo enviar solicitudes PHP a través de nginx.
No tengo suficiente reputación para publicar un comentario sobre SO, pero ...
https://github.com/facebook/hiphop-php/blob/master/hphp/doc/options.compiled
No parece que haya una manera de duplicar los indicadores -d o -f en la configuración de HHPHP, pero la documentación de las opciones no es exactamente exhaustiva. Si es posible, tiene que verse algo como esto:
* {
pattern = ^(.*)$
to = /path/to/codeigniter/index.php/$1
qsa = true
conditions {
-d {
pattern = %{REQUEST_FILENAME}
type = request
negate = true
}
-f {
pattern = %{REQUEST_FILENAME}
type = request
negate = true
}
}
}
¿Has probado algo en esta línea? EDITAR: Quizás intercambie los indicadores de archivo -d y -f con el elemento% {REQUEST_FILENAME}. Podría tener eso al revés. Una vez más, la documentación no es muy esclarecedora, y solo estoy escupiendo cosas.
Use NGINX como frontend para hiphop php. Como ventaja. Obtiene un mejor rendimiento para servir archivos estáticos.