2011-01-30 13 views
8

Ho due directory nella mia radice: /dev e /live.htaccess RewriteBase

Tutti i contenuti all'interno di queste directory hanno percorsi relativi come /css/style.css o /js/home.js.

Desidero poter modificare la directory root utilizzando htaccess in modo che i percorsi relativi diventino /live/css/style.css ecc. O /dev/css/style.css a seconda della versione del sito che stavo utilizzando.

Ho provato con il seguente codice nel file .htaccess si trova all'interno della directory /live:

RewriteEngine on 
RewriteBase /live/ 

ho anche provato ad utilizzare RewriteBase /public_html/live/.

Tuttavia, i percorsi del contenuto sono ancora http://domain.com/css/style.css anziché http://domain.com/live/css/style.css quando visualizzo il sito.

Qualcuno ha qualche idea?

Grazie.

EDIT >> dispiace dovrei spiegare che il mio .htaccess radice ha le seguenti regole che puntano verso le due directory:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC] 
RewriteCond %{HTTP_HOST} ^((www\.)?([a-z]+)\.)domain\.com [NC] 
RewriteRule ^((www\.)?([a-z]+)\.)domain\.us$ /live/index.php?tag=%3 [L,P] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC] 
RewriteCond %{HTTP_HOST} ^dev.((www\.)?([a-z]+)\.)domain\.com [NC] 
RewriteRule ^((www\.)?([a-z]+)\.)domain\.us$ /live/index.php?tag=%3 [L,P] 
+0

Si tratta di passare da un sito di produzione a uno di sviluppo, corretto? L'esempio 'http: // domain.com/live/css/style.css' è solo esplicativo, oppure desideri che gli URL esterni riflettano quale sito è attivo? Se quest'ultimo, perché? – outis

+0

Sì, per poter passare da uno all'altro e mantenere i relativi percorsi di file. – Kit

+0

Un percorso che inizia con "/" è assoluto, non relativo. Qual è il problema con l'utilizzo di una regola di riscrittura? – outis

risposta

10

RewriteBase consente di risolvere i problemi con gli URL come vengono tradotti in un file percorsi e viceversa. Non è per quello che stai usando per. Utilizzare uno standard RewriteRule

RewriteCond %{REQUEST_URI} !^/live 
RewriteRule ^(/?)(.*) /live/$2 
+0

Grazie per la risposta. Posso usare RewriteBase per modificare i relativi percorsi di file come /css/style.css in /live/css/style.css? – Kit

+0

Come ho già detto, non è per quello che vuoi. 'RewriteBase' è per il mapping tra percorsi URL e percorsi di file in fasi specifiche dell'elaborazione delle richieste di Apache. Leggi la documentazione (che è collegata a sopra). – outis

Problemi correlati