Riscrittura non funzionante nel file .htaccess

Jun 21 2018

Aggiornamento 6/26/18: Apprezzo che questo possa essere un duplicato di Reindirizzamento, Modifica URL o Reindirizzamento da HTTP a HTTPS in Apache - Tutto ciò che avresti sempre voluto sapere sulle regole Mod_Rewrite ma avevi paura di chiedere , tuttavia, l'ho menzionato nel mio originale post che ero stato in quel post e ho trovato il sito del tester da quel post. Ho letto quel post e, anche se sono ancora un principiante nel riscrivere le regole, non credo che sia un duplicato; tuttavia potrei sbagliarmi.

Sto cercando di impostare una nuova regola di riscrittura nel mio .htaccessfile (sotto)

    SetEnv HTTPS on

<IfModule mod_rewrite.c>
    RewriteEngine On
Options -Indexes
    # Send would-be 404 requests to Craft
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC]
    RewriteRule (.+) index.php?p=$1 [QSA]
Options - Autodiscover
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} -s [OR]
   RewriteCond %{REQUEST_FILENAME} -l [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteRule ^.*$ - [NC,L]
   RewriteRule ^.*$ autodiscover.php [NC,L]
</IfModule>

Ho trovato questo tester online in questo post: Reindirizza, Modifica URL o Reindirizza da HTTP a HTTPS in Apache - Tutto ciò che avresti sempre voluto sapere sulle regole Mod_Rewrite ma avevi paura di chiedere

Collegamento al tester: .htaccess tester

Quando ho eseguito la mia configurazione, ho ottenuto le seguenti informazioni di debug dell'output per .htaccess

La mia domanda:

  1. Come posso assicurarmi che index.php non venga instradato in modo errato in base all'output delle " informazioni di debug per .htaccess "?
    Nell'output delle "informazioni di debug per .htaccess", index.php viene aggiunto al file autodiscover.xml, che NON è ciò di cui ho bisogno.
  2. Qual è il problema con la mia configurazione che ne causa l'esito negativo per quanto riguarda la parte di individuazione automatica? Le " informazioni di debug per .htaccess " indicano che la condizione è stata soddisfatta solo a causa di "OR" nella mia configurazione.

Grazie a tutti coloro che vedono questo e offrono qualsiasi tipo di assistenza o spiegazione !! :-)

Risposte

1 EsaJokinen Jun 22 2018 at 14:04

L'ultima regola non ha condizioni, quindi viene utilizzata sempre.

RewriteRule ^.*$ autodiscover.php [NC,L]

La RewriteConddirettiva definisce una condizione della regola. Uno o più RewriteCondpossono precedere una RewriteRuledirettiva. La regola seguente viene quindi utilizzata solo se lo stato corrente dell'URI corrisponde al suo modello e se queste condizioni sono soddisfatte.

Pertanto, tutte le tue condizioni sono legate alla regola precedente, invece:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

Anche:

  • Ti serve solo RewriteEngine Onuna volta.

  • Options- Autodiscover avrebbe un errore di sintassi SE ci fosse una tale funzionalità del server.