2013-07-16 4 views
0

J'ai une configuration d'application Web sur un serveur local et de transit. L'application locale a un chemin de base différent vers le transfert. par exemple.Dossier de réécriture htaccess avec différents chemins

Local http://phils-imac.local/git/clients/myproject/html/

Mise en scène http://myserver.com/myproject/html/

Je voudrais utiliser htaccess pour rendre les urls accessibles sans la partie 'html'. par exemple. http://phils-imac.local/git/clients/myproject/ http://myserver.com/myproject/

J'utilise cette règle de réécriture sur mon serveur de mise en scène:

RewriteEngine On 
RewriteCond %{SERVER_NAME} =myserver.com 
RewriteCond %{REQUEST_URI} !^/myproject/html/.*$ 
RewriteRule ^(.*)$ /myproject/html/$1 [L] 

Il fonctionne bien, mais je sens que je dois le personnaliser pour chaque projet. Idéalement, j'aimerais que la partie 'myproject' soit une variable et que la règle soit plus générale afin qu'elle fonctionne également sur mon chemin local.

+0

Alors, quelle est votre question? Est-ce "comment utiliser une variable à la place de 'myproject'?" D'où viendrait cette variable? La seule chose qui empêche cette règle de fonctionner sur le chemin local comme indiqué dans votre exemple est la ligne 'RewriteCond% {SERVER_NAME} = myserver.com' explicitement lui dire de ne pas. – IMSoP

+0

La règle de réécriture ci-dessus serait réécrire à http: //phils-imac.local/myproject/ au lieu de http: //phils-imac.local/git/clients/myproject/ Je voudrais remplacer le myproject par une variable mais aussi que la règle fonctionne avec des chemins différents et pas seulement des absolus. – fatlinesofcode

Répondre

0

Vous ne pouvez pas définir des variables dans votre .htaccess mais si vous gardez votre nom du projet même, vous pouvez accueillir pour un chemin de base variable dans la règle de réécriture comme

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} !/html/ [NC] 
RewriteRule ^(.*?)/?myproject/(.*)$ $1/myproject/html/$2 [NC,L] 

Cela nécessite votre .htaccess dans votre répertoire racine web . Si votre .htaccess réside dans votre dossier myproject essayez ceci:

RewriteEngine On 

RewriteCond %{REQUEST_URI} !/html/ [NC] 
RewriteRule ^(.*)$ html/$1 [L] 

Dans les deux cas, vous devez déposer votre chèque %{SERVER_NAME} car il ne correspondra jamais à entre vos sites locaux et mise en scène.