it-swarm-id.com

Apache menulis ulang aturan untuk workstation dan server pengembangan

Saya punya pengembang yang mengedit halaman untuk beberapa situs di tumpukan WAMP dan kemudian mengunggah ke server publik yang menjalankan tumpukan LAMP. Kami cukup senang dengan itu, tetapi kami memiliki gangguan kecil ini: kami tidak bisa menggunakan file .htaccess yang sama di lingkungan pengembangan dan produksi. Di situs publik, folder sumber memetakan ke http://foo.com, http://bar.com, dan sebagainya. Pada workstation pengembang, folder sumber memetakan ke http://localhost/foo, http://localhost/bar, dan seterusnya. Itu berarti bahwa saya memerlukan RewriteBase / untuk server publik, sementara setiap situs di workstation pengembang menggunakan RewriteBase /foo/, RewriteBase /bar/, atau apa pun.

Apakah ada cara untuk menentukan relatif RewriteBase ke file .htaccess? Ada ide lain tentang cara membuat aturan penulisan ulang saya lebih portabel?

Jika Anda penasaran, saya menggunakan aturan penulisan ulang untuk mengarahkan kembali ke kode perutean CakePHP, jadi aturannya terlihat seperti ini:

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

Jika saya tidak menggunakan RewriteBase dari /foo/ pada workstation pengembang, maka ia akan menulis ulang menjadi /cake_main.php bukan /foo/cake_main.php.

7
Don Kirkby

Solusi saya untuk ini belum mengacaukan aturan penulisan ulang, tetapi untuk menambahkan domain/host lokal yang terpisah dengan TLD palsu ke PC saya.

Anda dapat melakukan ini dengan mengedit file C:\Windows\System32\drivers\etc\hosts

Ketahuilah bahwa pada Windows 7 (dan mungkin Vista) bahwa untuk berhasil mengedit file ini, Anda perlu menjalankan editor teks Anda sebagai Administrator.

Anda dapat menambahkan host menggunakan garis yang terlihat seperti:

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

Setelah ini tersedia, Anda dapat mengkonfigurasi Apache untuk nama-nama domain ini dan Anda akan siap untuk menggunakannya.

Tentu saja, ini tidak bekerja dengan baik pengujian dari mesin lain di jaringan lokal, tetapi jika Anda berada dalam situasi itu mungkin lebih baik untuk menggunakan server DNS lokal atau untuk menetapkan host ke alamat IP non-portabel lokal dan menyinkronkan file di semua PC.

4
JasonBirch