it-swarm.it

Apache riscrive le regole per la workstation e il server di sviluppo

Ho sviluppatori che modificano pagine per diversi siti su uno stack WAMP e poi li caricano sui server pubblici che eseguono stack LAMP. Ne siamo abbastanza contenti, ma abbiamo questo piccolo fastidio: non possiamo usare gli stessi file .htaccess negli ambienti di sviluppo e produzione. Sui siti pubblici, la cartella di origine esegue il mapping a http://foo.com, http://bar.com e così via. Sulla workstation di sviluppo, le cartelle di origine vengono associate a http://localhost/foo, http://localhost/bar e così via. Ciò significa che ho bisogno di RewriteBase / per i server pubblici, mentre ogni sito sulla stazione di lavoro dello sviluppatore utilizza RewriteBase /foo/, RewriteBase /bar/ o qualsiasi altra cosa.

Esiste un modo per specificare RewriteBase relativo al file .htaccess? Altre idee su come rendere più portatili le mie regole di riscrittura?

Se sei curioso, sto usando le regole di riscrittura per reindirizzare al codice di routing CakePHP, quindi la regola è simile alla seguente:

RewriteRule ^(.*)$ cake_main.php?url=$1 [QSA,L]

Se non uso un RewriteBase di /foo/ sulla stazione di lavoro dello sviluppatore, verrà riscritto in /cake_main.php invece di /foo/cake_main.php.

7
Don Kirkby

La mia soluzione non è stata quella di confondere le regole di riscrittura, ma di aggiungere domini/host locali separati con TLD falsi sul mio PC.

Puoi farlo modificando il file C:\Windows\System32\drivers\etc\hosts

Tenere presente che su Windows 7 (e forse Vista) che per modificare correttamente questo file è necessario eseguire l'editor di testo come amministratore.

Puoi aggiungere host usando linee simili a:

127.0.0.2       www.mysite.local
127.0.0.3       www.myothersite.local

Una volta che sono presenti, puoi configurare Apache per questi nomi di dominio e sarai a posto.

Ovviamente, questo non funziona per testare bene da altre macchine nella rete locale, ma se ti trovi in ​​quella situazione potrebbe essere meglio usare un server DNS locale o assegnare gli host a indirizzi IP non portatili locali e sincronizzare i file su tutti i PC.

4
JasonBirch