Question

Ok. Je construis donc ce site accessible via deux domaines différents. Je ne peux donc pas utiliser RewriteBase dans mon fichier .htaccess. Les règles (ci-dessous) que j’utilise pour contourner ce problème semblent bien fonctionner. Cependant, lorsque j’utilise les paramètres .htaccess ci-dessous sur ma boîte locale avec des URL propres (WAMP), tout fonctionne correctement, mais dès que je l’utilise sur le serveur en direct (hébergement mutualisé LAMP), chaque page sur laquelle je navigue affiche la page d’accueil (le un sous-index je suppose) même si l'URL du navigateur est clairement mise à jour.

<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>

Toute aide ou idée est très appréciée.

  • Luke
Était-ce utile?

La solution

La meilleure chose à faire est probablement de reproduire le problème sur votre boîte locale et d’activer RewriteLogLevel afin que vous puissiez voir ce qui se passe. (Étant donné que vous ne pouvez généralement pas modifier le niveau de journalisation de l'hébergement partagé)

Vous pourrez peut-être "simuler". le problème en faisant une réécriture de répertoire dans votre configuration principale Apache. (L'hébergement partagé procède évidemment à sa propre réécriture avant d'arriver au .htaccess!) Si vous ne pouvez pas reproduire le problème, vous devrez peut-être démarrer le débogage d'essai et d'erreur sur le serveur distant. C'est moche mais si c'est votre seule option:

Utilisez l'indicateur R (redirection) dans les substitutions pour envoyer toute URL réécrite à votre navigateur. Utilisez TELNET (ou un add-on de navigateur approprié) pour examiner les réponses HTTP.

N'oubliez pas d'échapper aux points dans les regex!

En remarque, le motif RewriteRule est mis en correspondance avant RewriteConds au-dessus. Ce type de configuration est probablement meilleur pour la performance:

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

Notez que je n'ai pas testé cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top