è qualcosa di simile possibile in Apache ... (vale a dire reindirizzare a un URL esterno con il percorso che causa l'errore 403 passava)Apache ErrorDocument Redirect esterno con variabili
ErrorDocument 403 http://www.sample.com/{{REDIRECT_URL}}
è qualcosa di simile possibile in Apache ... (vale a dire reindirizzare a un URL esterno con il percorso che causa l'errore 403 passava)Apache ErrorDocument Redirect esterno con variabili
ErrorDocument 403 http://www.sample.com/{{REDIRECT_URL}}
Penso che sia possibile, come il doc dire .. http://httpd.apache.org/docs/2.0/mod/core.html#errordocument
Forse così:
ErrorDocument 403 http://www.sample.com/?do=somthing
Questo non aggiunge l'URL richiesto ... Pensavo di essere stato chiaro nella mia domanda. – Pykler
creo/directo pubblicazione ry, ma voglio che questo sarà servito da index.php principale dove ci sono file in questa directory.
/Pubblicazione? Page = 1 sarà servito da /index.php, /Publication/file.pdf è un file che risiede in questa stessa directory.
Apache returend 403 errore poiché/La directory di pubblicazione non ha il permesso di essere elencata. Se reindirizzate l'errore 403 a /index.php non potete catturare le variabili. Penso che la variabile REDIRECT_QUERY_STRING possa essere usata ma che potrebbe rovinare le mie classi di php.
Ho modificato la configurazione di mod_rewrite per catturare la directory che serve, si veda '#', rimossa la direttiva ErrorDocument 403, poiché non è necessaria.
<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>
Quello che ho opzione di configurazione
/Publication > /index.php?path=Publication
/Publication/?page=1 > /index.php?path=Publication&page=1
/Publication/file.pdf > /Publication/file.pdf
Dov'è il tuo '.htaccess'? Si trova all'interno della directory '/ Publication'? In tal caso, hai 'DirectorySlash Off' da qualche parte nel tuo' .htaccess'? Altrimenti, come puoi dire che '/ Publication> /index.php?path = Publication' quando per impostazione predefinita Apache reindirizzerà '/ Publication' a'/Publication/'se' DirectorySlash On' è impostato e quindi riscrivi le regole riscriverà '/ Publication /> /index.php? path = Publication /'. Ti sto chiedendo solo perché sono curioso del tuo setup e vorrei mappare diciamo '/ Publication' direttamente a' /index.php? Path = Publication' senza far reindirizzare Apache a '/ Publication /'. – tonix
ErrorDocument
, sfortunatamente, non supporta l'espansione variabili del server. Quello che puoi provare è usare lo script locale, che invierà il reindirizzamento per te.
ErrorDocument 403 /cgi-bin/error.cgi
nota, che lo script deve essere locale, altrimenti non sarà possibile ottenere REDIRECT_*
variabili passate. E nello script stesso è possibile emettere dichiarazione di reindirizzamento:
#!/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";
documentazione Vedere Apache per ulteriori delucidazioni http://httpd.apache.org/docs/2.4/custom-error.html
Sì! Ma solo a partire con Apache 2.4.13:
Da 2.4.13, la sintassi delle espressioni può essere utilizzato all'interno della direttiva per produrre stringhe dinamici e URL.
(da https://httpd.apache.org/docs/2.4/mod/core.html#errordocument)
La seguente configurazione comporterà un 302 risposta HTTP:
ErrorDocument 403 http://www.example.com%{REQUEST_URI}
Nota la mancanza di una barra perché %{REQUEST_URI}
inizia con una barra.
Dove {{REDIRECT_URL}} è l'URL richiesto. – Pykler