2008-11-03 12 views
0

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

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

Avez-vous vérifié si mod_rewrite est correctement activé sur votre serveur live? Si oui, avez-vous vérifié que tous les autres paramètres applicables à Apache sont également identiques entre votre serveur de test et votre serveur live? –

+0

Vous pourriez réaliser qu'il est assez difficile de vérifier ces paramètres en tenant compte du fait que la boîte locale est Windows et la boîte de serveur est linux. Oui j'ai vérifié. Mais vous pouvez seulement vérifier dans une certaine mesure et dans ses capacités. C'est là que ce forum entre en scène ... – Luke

Répondre

2

Probablement la meilleure chose à faire est de reproduire le problème sur votre boîte locale et se présenter 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 sur l'hébergement partagé)

Vous pouvez peut-être «simuler» le problème en effectuant une réécriture d'annuaire dans votre configuration principale Apache. (L'hébergement partagé effectue évidemment sa propre réécriture avant d'accéder au fichier .htaccess!) Si vous ne pouvez pas reproduire le problème, vous devrez peut-être lancer le débogage avec tâtonnements sur le serveur distant. C'est moche mais si c'est votre seule option:

Utilisez l'indicateur R (redirection) dans les substitutions pour renvoyer toute URL réécrite à votre navigateur. Utilisez TELNET (ou un add-on de navigateur approprié) pour inspecter les réponses HTTP. N'oubliez pas d'échapper des points dans les expressions régulières! En remarque, le motif RewriteRule est apparié avant les RewriteConds situés au-dessus. Ce type d'installation 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.

Questions connexes