2010-01-12 4 views
21

J'aimerais que mon fichier .htaccess spécifie une autre RewriteBase selon que le fichier .htaccess se trouve sur mon ordinateur local ou sur un serveur Web. Voici le code mod_rewrite j'ai essayé, cependant, il ne fonctionne pas:Avec mod_rewrite puis-je spécifier un RewriteBase dans un RewriteCond?

RewriteCond %{HTTP_HOST} ^localhost:8080 
RewriteBase /example/ 
RewriteCond %{HTTP_HOST} ^www.example.com 
RewriteBase/

Ce serait utile pour afficher un aperçu facilement plusieurs sites sur ma machine locale et ensuite être en mesure de télécharger ces sites vers des serveurs web pour le domaine individuel des noms.

Répondre

30

La seule solution que nous avons finalement trouvé des regards comme ça:

# Activation of the URL Rewriting 
Options +FollowSymlinks 
RewriteEngine On 

# RewriteBase equivalent - Production 
RewriteCond %{HTTP_HOST} !^localhost$ 
RewriteRule . - [E=REWRITEBASE:/production/path/] 

# RewriteBase equivalent - Development 
RewriteCond %{HTTP_HOST} ^localhost$ 
RewriteRule . - [E=REWRITEBASE:/development/path/] 

# Rewriting 
RewriteRule ^(.*)$ %{ENV:REWRITEBASE}index.php?page=$1 [L] 

Ce code offre un moyen de simuler differents "RewriteBase".

+1

Incroyable. Merci! – Matthew

+0

Étiez-vous capable de comprendre pourquoi un 'RewriteBase' conditionné ne fonctionne pas? Je suis confronté au même problème en ce moment. – cballenar