Domanda

Ok. Quindi sto costruendo questo sito che è accessibile attraverso due diversi domini. Quindi non posso usare RewriteBase nel mio .htaccess. Le regole (sotto) che uso per aggirare questo problema sembrano funzionare bene. Tuttavia, quando utilizzo le seguenti impostazioni .htaccess sulla mia casella locale con URL puliti (WAMP), tutto funziona bene, ma nel momento in cui lo uso sul server live (LAMP di hosting condiviso) ogni pagina che visito visualizza la home page (il uno sotto l'indice immagino) anche se l'URL nel browser viene chiaramente aggiornato.

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain1.com/(.*)$
  RewriteRule ^(.*)$ /domain1.com/index.php?q=$1 [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain2.com/(.*)$
  RewriteRule ^(.*)$ /domain2.com/index.php?q=$1 [L,QSA]
</IfModule>

Qualsiasi aiuto o idea è molto apprezzato.

  • Luca
È stato utile?

Soluzione

Probabilmente la cosa migliore da fare è riprodurre il problema sulla tua casella locale e attivare RewriteLogLevel in modo da poter vedere cosa sta succedendo. (Dato che di solito non è possibile modificare il livello di registro sull'hosting condiviso)

Potresti essere in grado di " simulare " il problema eseguendo una riscrittura della directory nella configurazione principale di Apache. (L'hosting condiviso esegue ovviamente la propria riscrittura prima di arrivare al .htaccess!) Se non riesci a riprodurre il problema, potresti dover avviare il debug di prova ed errore sul server remoto. Questo è brutto ma se è la tua unica opzione:

Utilizza il flag R (reindirizzamento) nelle sostituzioni per inviare qualsiasi URL riscritto al tuo browser. Utilizzare TELNET (o un componente aggiuntivo del browser appropriato) per ispezionare le risposte HTTP.

Non dimenticare di sfuggire ai punti nelle regex!

Come nota a margine, il modello RewriteRule viene abbinato prima di RewriteConds sopra di esso. Questo tipo di installazione è probabilmente migliore per le prestazioni:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/domain1\.com/(.*)$ /domain1.com/index.php?q=$1 [L,QSA]
#                     ^ should be escaped

Nota che non l'ho provato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top