Apache .htaccess per reindirizzare index.html alla radice, perché FollowSymlinks e RewriteBase?

Per reindirizzare tutte le somefolder/index.html (e anche somefolder/index.htm) per somefolder/ io uso questa semplice regola di riscrittura in Apache .il file htaccess:

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*\/index\.html?\ HTTP/
RewriteRule ^(.*)index\.html?$ "/$1" [R=301,L]

Questo funziona bene!

Ma Google gruppi essi suggeriscono di aggiungere anche:

Options +FollowSymlinks 
RewriteBase /
  1. Qualcuno potrebbe essere così gentile da spiegare a me perché devo aggiungere queste ultime righe, e spiegarmi un po ‘ cosa significano e cosa fanno?

  2. C’è un potenziale di secuirty rischio di non aggiungere queste righe?

Molte grazie,

OriginaleL’autore Marco Demaio | 2010-09-22

One Reply
  1. 20

    Perché sono suggerite:

    Si consiglia di aggiungere Options +FollowSymlinks perché è necessario che il collegamento simbolico seguente è attivata per mod_rewrite di lavoro, e c’è una possibilità che, mentre si può essere ammessi a girare, non è abilitato dalla configurazione del server principale. Ho il sospetto che il motivo che simbolico, è necessario quanto segue viene beause il modulo che consente un numero di chiamate per apr_stat(), che sembra che ha la necessità di seguire i link simbolici per ottenere un file di informazioni in tutti i casi.

    Come per RewriteBase, è in genere non è necessario. La documentazione va in proposito, ma come la maggior parte delle persone del file fare vivere sotto il DocumentRoot da qualche parte, di solito serve solo scopo, se si stanno reindirizzando esternamente e si utilizza la directory relativa Url. Per illustrare il significato, si consideri la seguente:

    RewriteEngine On
    
    RewriteRule ^redirect index.html [R,L]
    

    Una richiesta per example.com/redirect si tradurrà in un esterno reindirizzare a example.com/full/path/to/web/root/index.html. La ragione di questo è che prima si gestisce il reindirizzamento, mod_rewrite re-aggiunge il percorso della directory corrente (che è il valore predefinito di RewriteBase). Se si è modificato RewriteBase essere /, quindi il percorso sarà sostituito con la stringa, in modo che una richiesta per index.html sarebbe una richiesta per /index.html.

    Nota che hanno fatto questo in modo esplicito il sostituire troppo, indipendentemente dal valore di RewriteBase:

    RewriteEngine On
    
    RewriteRule ^redirect /index.html [R,L]
    

    …funziona come previsto, per esempio. Tuttavia, se avete avuto molte regole che ha bisogno di una base comune e che venivano spostati in giro tra le directory, il contenuto non era sotto la radice, sarebbe utile impostare opportunamente RewriteBase in questo caso.

    Il rischio di non usarle:

    Non c’è assolutamente alcun rischio per la sicurezza non specificando Options +FollowSymlinks, perché se non lo è non impostare la configurazione del server principale, mod_rewrite restituirà sempre 403 Forbidden. Che tipo di problematiche per le persone che cercano di vista del contenuto, ma sicuramente non dà loro alcun esteso la possibilità di sfruttare il vostro codice.

    Non impostazione RewriteBase potrebbe esporre il percorso contenuti web se avessi un’configurato in modo non corretto set di regole in uno dei tuoi .file htaccess, ma non sono sicuro che non c’è alcuna ragione per ritenere che un rischio per la sicurezza.

    +1 e grazie per il tempo che ha avuto a spiegare tutto questo. Vorrei poter dare un voto positivo. Mi chiedo se RewriteBase potrebbe essere teh soluzione per risolvere quest’altra domanda ho chiesto: stackoverflow.com/questions/3242322/…
    Demaio: Nessun problema! Come per la domanda, darò un’occhiata al più tardi oggi e vedere se posso avere qualche suggerimento.

    OriginaleL’autore Tim Stone

Lascia un commento