Página 1 de 1

Eliminar una regla de mod_rewrite

NotaPublicado: 2011-04-08 14:37 @650
por danimera
Tengo este archivo .htaccess como sea

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  1. # enable apache morRewrite module #
  2. RewriteEngine on
  3.  
  4. RewriteBase /
  5.  
  6. RewriteCond %{REQUEST_FILENAME} !-d
  7. RewriteCond %{REQUEST_FILENAME} !-f
  8.  
  9.  
  10. # define system languages
  11. RewriteRule ^([^//]+)/?(.{2})?/$ index.php?page=$1 [QSA,L]
  12.  
  13. # define paging
  14. RewriteRule ^([^//]+)/?(.*)?/index([0-9]*).ht(m?ml?)$ index.php?page=$1&rlVareables=$2&pg=$3 [QSA,L]
  15.  
  16. # define listing
  17. RewriteRule ^([^//]+)/(.*)-l([0-9]*).ht(m?ml?)$ index.php?page=$1&rlVareables=$2&listing_id=$3 [QSA,L]
  18.  
  19. # define single pages
  20. RewriteRule ^([^//]+)/?(^/*)?.ht(m?ml?)$ index.php?page=$1 [QSA,L]
  21.  
  22. # define other pages
  23. RewriteRule ^([^//]+)/?(.*)?/?(.*)?(.ht(m?ml?)|/+)$ index.php?page=$1&rlVareables=$2 [QSA,L]
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Pero tengo un fichero app.pl dentro del directorio mobil, pero no logro que se me ejecute por esas reglas...

Intenté
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# movil APP
RewriteRule ^mobil/app.pl mobil/app.pl [L,NC]
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Y aun así no lo logro :?

Lo más curioso es que si intento entrar por

http://www.misitio.com/mobil/index.php

sí me carga el archivo PHP que tengo ahí.

Re: Eliminar una regla de mod_rewrite

NotaPublicado: 2011-04-08 19:08 @839
por explorer
Me parece que no hay ninguna regla que concuerde con app.pl...

¿Qué problema hay en colocar app.pl en un directorio cgi-bin de ese dominio? O incluso, se podría poner como ejecutable y activar la opción +ExecCGI en ese directorio, para que el servidor web lo ejecutara.

Re: Eliminar una regla de mod_rewrite

NotaPublicado: 2011-04-09 17:56 @789
por danimera
Bueno, hice una corrección a la regla.

Hice otro archivo en la carpeta mobil... realmente será llamada desde un subdominio http://www.mobil.pagina.com

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  1. # enable apache morRewrite module #
  2. RewriteEngine on
  3.  
  4. # movil APP
  5. RewriteRule ^mobil index.php [L,NC]
  6.  
  7. RewriteRule ^app app.pl [L,NC]
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Ahí sí me funciona... pero ¿será que me toca por cada archivo entonces hacer una regla para esta carpeta ? :?

Re: Eliminar una regla de mod_rewrite

NotaPublicado: 2011-04-10 12:07 @546
por explorer
danimera escribiste:¿será que me toca por cada archivo entonces hacer una regla para esta carpeta?

No entiendo la pregunta... si se trata de procesar las peticiones para un subdirectorio, debería bastar con solo una regla.

¿A qué archivos te refieres? ¿A los de .htaccess?

Si colocas las reglas para el mod_rewrite en el httpd.conf, o apache2.conf, o, algo más normal: en el fichero de definiciones del dominio virtual, solo tendrás que hacerlo una vez.

Re: Eliminar una regla de mod_rewrite

NotaPublicado: 2011-04-10 14:44 @655
por danimera
Lo que no quiero es mod_rewrite para la carpeta mobil... No quiero procesar ninguna regla ni nada, poder acceder a los archivo dentro de esta carpeta... y los archivos son los ficheros html o .pl que tenga ahí.

Re: Eliminar una regla de mod_rewrite

NotaPublicado: 2011-04-11 09:40 @445
por explorer
Si la carpeta mobil/ está colgando del directorio del dominio, no habría que hacer nada para que el servidor web encontrara y sirviera los ficheros que hay dentro de ella (y siempre y cuando los permisos de lectura y ejecución de la carpeta fueran correctos).

Otra cosa son los ficheros .pl.

Al servidor web se le puede indicar de varias maneras que, en vez de entregar los contenidos de los ficheros Perl, los ejecute con el protocolo CGI.

Por ejemplo, una configuración típica con el servidor web, sería:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
AddHandler cgi-script .cgi .sh .pl .ida

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ScriptAlias /cgi/     /usr/lib/cgi-bin/

<Directory /usr/lib/cgi-bin/>
    AllowOverride None
    Options ExecCGI FollowSymLinks -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

<Directory /home/*/public_html/cgi-bin>
        AllowOverride Options
        Options +ExecCGI
        SetHandler cgi-script
</Directory>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Aquí, definimos que ciertas extensiones deben ser interpretadas como correspondientes a programas CGI (AddHandler). O que todo fichero que esté dentro de un directorio ScriptAlias debe también ser considerado así. Y las dos marcas Directory indican las condiciones que queremos aplicar a dos directorios: el /usr/lib/cgi-bin del sistema, y las carpetas cgi-bin/ de cada usuario. Lo principal es marcar en ellas la opción +ExecCGI, para indicar que ahí queremos que se ejecuten los programas, en lugar de volcar sus contenidos.

El orden de ejecución de estas directivas es el siguiente:
* Primero, se permite la ejecución de cgi que estén en el directorio indicado por ScriptAlias
* Luego, si los cgi que queremos ejecutar están fuera de esos directorios, debemos hacer dos pasos:
a) Con AddHandler indicamos la extensión de los cgi
b) Con Options, activamos la opción +ExecCGI en el directorio donde van a estar.

Es decir, con solo la primera opción (ScriptAlias) te vale para definir dónde quieres que residan los cgi.

Y ya está. Un paso de seguridad adicional sería usar el módulo SuExec del Apache. Hay que dar una serie de pasos más en la configuración (usar el módulo UserDir, la URL debe tener un '~' delante del usuario, los cgi deben tener como propietario y grupo al propietario del sitio web, permisos adecuados de lectura y ejecución, etc), pero eso nos da como resultado que el cgi se ejecuta con la personalidad del propietario del sitio, reduciendo mucho los problemas de seguridad.

Más información en el Apache Tutorial: Dynamic Content with CGI.