2011-08-26 15 views
5

No soy muy bueno con mod_rewrite pero realmente lo necesito ahora.RewriteRule redirecciona todo excepto una carpeta

Tengo todo el nuevo sitio web en una carpeta llamada site. Entonces, si necesita ir al nuevo sitio web, la URL se verá como http://domain.com/site/.... Ahora necesito excluir el site de la URL, pero aún así apuntarlo a /site/ EXCEPTO para una carpeta llamada upload. ¿Cómo puedo hacer esto?

Así http://domain.com/anything.ext y http://domain.com/anyfolder apuntaría a excepción de http://domain.com/site/...domain.com/upload que todavía apunta a domain.com/upload.

Luego, otra pregunta, ¿se supone que esto solo es bueno para una solución temporal o realmente no importa (pensando en la velocidad y la eficiencia)?

Respuesta

7

(se asume que le está poniendo las reglas en un archivo .htaccess en la raíz del documento) Usar este:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^upload 
RewriteRule (.*) site/$1 [L] 

Si va a colocar en httpd.conf, es necesario cambiar ligeramente:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/upload 
RewriteRule (.*) /site$1 [L] 

En cuanto a la segunda pregunta, personalmente no me gusta mod_rewrite y ciertamente no lo usaría como una solución permanente a menos que sea absolutamente necesario. Esto se debe a que mod_rewrite es bastante ineficiente, especialmente en los servidores ocupados, porque tiene que ejecutar al menos una expresión regular en cada solicitud entrante. Siempre debe usar el indicador [L] para asegurarse de que no se procesen más reglas de las necesarias.

Siempre es más eficiente estructurar sus directorios de la misma forma que la aplicación se refiere a ellos. Lo anterior debe hacer que trabaje, pero trate de no dejarlo en el lugar por mucho tiempo.

Estoy seguro de que ya lo sabe, pero here es la documentación de mod_rewrite.

+0

Cuando lo uso (.htaccess code) muestra un error interno del servidor. No pude encontrar lo que está mal. – Boyd

+0

¿Qué dice tu registro de Apache cuando recibes el error? ;-) – DaveRandom

+0

Mi empresa de alojamiento de clientes está siendo un dolor en el culo. No dan soporte en problemas de htaccess y, por lo tanto, no quieren enviarme ningún registro. Dijeron que no limitaban las funciones de htaccess. Suponiendo que mi código está bien, debería seguir contactando con la empresa de alojamiento o ¿puede haber otra causa del error interno del servidor? (no olvide que solo se muestra cuando .htaccess contiene el código de arriba) – Boyd

Cuestiones relacionadas