2012-06-07 9 views

Respuesta

0

puedo crear/Directo publicación ry, pero quiero que esto sea servido por index.php principal donde hay un archivo en este directorio.

/Publication? Page = 1 será atendido por /index.php, /Publication/file.pdf es un archivo que reside en este mismo directorio.

Apache returend 403 error desde/El directorio de publicación no tiene permiso para figurar en la lista. Cuando se redirige el error 403 a /index.php no se pueden capturar las variables. Creo que se puede usar la variable REDIRECT_QUERY_STRING, pero eso afectaría mis clases de php.

Cambié la configuración de mod_rewrite para detectar la publicación del directorio, vea '#', eliminé la directiva ErrorDocument 403, ya que no es necesario.

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
# RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    RewriteRule ^(.*)$ index.php?path=$1 [L,QSA] 
</IfModule> 

Lo que tengo opción de configuración

/Publication > /index.php?path=Publication 

/Publication/?page=1 > /index.php?path=Publication&page=1 

/Publication/file.pdf > /Publication/file.pdf 
+0

¿Dónde está tu '.htaccess'? ¿Está dentro del directorio '/ Publication'? Si es así, ¿tiene 'DirectorySlash Off' en algún lugar de su' .htaccess'? De lo contrario, ¿cómo se puede decir que '/ Publication> /index.php?path = Publication' cuando por defecto Apache redireccionará '/ Publication' a'/Publication/'si' DirectorySlash On' está configurado y luego reescribirá las reglas reescribirá '/ Publication /> /index.php? path = Publication /'. Te lo pregunto solo porque tengo curiosidad acerca de tu configuración y me gustaría asignar digamos '/ Publication' directamente a' /index.php? Path = Publication' sin dejar que Apache redirija a '/ Publication /'. – tonix

0

ErrorDocument, desafortunadamente, no es compatible expansión variables de servidor. Lo que puede intentar es usar script local, que emitirá un redireccionamiento para usted.

ErrorDocument 403 /cgi-bin/error.cgi 

Tenga en cuenta, que el guión tiene que ser local, de lo contrario no obtendrá REDIRECT_* variables pasadas. Y en el mismo script puede emitir la declaración de redirección:

#!/usr/bin/perl 
my $redirect_status = $ENV{'REDIRECT_STATUS'} || ''; 
my $redirect_url = $ENV{'REDIRECT_URL'} || ''; 

if($redirect_status == 403) { 
    printf("Location: http://%s%s\n", 'www.sample.com', $redirect_url); 
    printf("Status: %d\n", 302); 
} 
print "\n"; 

documentación Ver Apache para más ideas http://httpd.apache.org/docs/2.4/custom-error.html

0

Sí! Pero sólo a partir de Apache 2.4.13:

Desde 2.4.13, la sintaxis de la expresión se puede utilizar dentro de la directiva para producir cuerdas dinámicas y URL.

(de https://httpd.apache.org/docs/2.4/mod/core.html#errordocument)

La siguiente configuración resultará en una respuesta HTTP 302:

ErrorDocument 403 http://www.example.com%{REQUEST_URI} 

Nota la falta de una barra porque %{REQUEST_URI} comienza con una barra.

Cuestiones relacionadas