Riscrittura non funzionante nel file .htaccess
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:
- 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. - 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
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 unaRewriteRuledirettiva. 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- Autodiscoveravrebbe un errore di sintassi SE ci fosse una tale funzionalità del server.