Mám vývojáře, kteří upravují stránky pro několik webů ve svazku WAMP a poté nahrávám na veřejné servery, na nichž jsou spuštěny komíny LAMP. Jsme s tím docela spokojeni, ale máme tuto menší nepříjemnost: nemůžeme použít stejné soubory .htaccess ve vývojovém a produkčním prostředí. Na veřejných webech se zdrojová složka mapuje na http://foo.com
, http://bar.com
atd. Na pracovní stanici vývojáře se zdrojové složky namapují na http://localhost/foo
, http://localhost/bar
atd. To znamená, že pro veřejné servery potřebuji RewriteBase /
, zatímco každý web na pracovní stanici pro vývojáře používá RewriteBase /foo/
, RewriteBase /bar/
nebo cokoli jiného.
Existuje nějaký způsob, jak určit RewriteBase vzhledem k souboru .htaccess
? Nějaké další nápady, jak zvýšit přenositelnost pravidel pro přepisování?
Pokud jste zvědaví, používám přepisovací pravidla k přesměrování na směrovací kód CakePHP, takže pravidlo vypadá takto:
RewriteRule ^(.*)$ cake_main.php?url=$1 [QSA,L]
Pokud na pracovní stanici pro vývojáře nepoužívám RewriteBase z /foo/
, přepíše se místo /cake_main.php
do /foo/cake_main.php
.
Mým řešením bylo nepořádek s pravidly přepisu, ale přidání samostatných lokálních domén/hostitelů s falešnými TLD do mého počítače.
To lze provést úpravou souboru C:\Windows\System32\drivers\etc\hosts
Uvědomte si, že v systému Windows 7 (a možná Vista), který tento soubor úspěšně upravíte, musíte spustit textový editor jako správce.
Hostitele můžete přidat pomocí řádků, které vypadají takto:
127.0.0.2 www.mysite.local
127.0.0.3 www.myothersite.local
Jakmile jsou na místě, můžete nakonfigurovat Apache pro tato doménová jména a budete rádi.
To samozřejmě nefunguje při dobrém testování z jiných počítačů v místní síti, ale pokud jste v této situaci, může být lepší použít místní server DNS nebo přiřadit hostitele místním nepřenosným IP adresám a synchronizovat soubory na všech počítačích.