Apache viết lại quy tắc cho máy trạm và máy chủ phát triển


7

Tôi đã có các nhà phát triển chỉnh sửa các trang cho một số trang trên ngăn xếp WAMP và sau đó tải lên các máy chủ công cộng chạy các ngăn xếp LAMP. Chúng tôi khá hài lòng với nó, nhưng chúng tôi có một phiền toái nhỏ: chúng tôi không thể sử dụng cùng một tệp .htaccess trong môi trường phát triển và sản xuất. Trên các trang web công cộng, thư mục nguồn ánh xạ tới http://foo.com, http://bar.comv.v. Trên máy trạm của nhà phát triển, các thư mục nguồn ánh xạ tới http://localhost/foo, http://localhost/barv.v. Điều đó có nghĩa rằng tôi cần RewriteBase /cho các máy chủ công cộng, trong khi mỗi trang web trên những ứng dụng máy trạm phát triển RewriteBase /foo/, RewriteBase /bar/hoặc bất cứ điều gì.

Có cách nào để chỉ định RewriteBase liên quan đến .htaccesstệp không? Bất kỳ ý tưởng nào khác về cách làm cho quy tắc viết lại của tôi dễ mang theo hơn?

Nếu bạn tò mò, tôi đang sử dụng các quy tắc viết lại để chuyển hướng đến mã định tuyến CakePHP, vì vậy quy tắc này trông như thế này:

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

Nếu tôi không sử dụng RewriteBase /foo/trên máy trạm của nhà phát triển, thì nó sẽ viết lại /cake_main.phpthay vì /foo/cake_main.php.

Câu trả lời:


4

Giải pháp của tôi cho vấn đề này không phải là gây rối với các quy tắc viết lại, mà là thêm các tên miền / máy chủ cục bộ riêng biệt với TLD giả vào PC của tôi.

Bạn có thể làm điều này bằng cách chỉnh sửa tập tin C:\Windows\System32\drivers\etc\hosts

Xin lưu ý rằng trên Windows 7 (và có thể cả Vista) rằng để chỉnh sửa thành công tệp này, bạn cần chạy trình soạn thảo văn bản của mình với tư cách Quản trị viên.

Bạn có thể thêm máy chủ bằng cách sử dụng các dòng giống như:

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

Khi đã có, bạn có thể định cấu hình Apache cho các tên miền này và bạn sẽ thấy ổn.

Tất nhiên, điều này không hoạt động để kiểm tra tốt từ các máy khác trong mạng cục bộ, nhưng nếu bạn ở trong tình huống đó, tốt hơn là sử dụng máy chủ DNS cục bộ hoặc gán máy chủ cho các địa chỉ IP không di động cục bộ và đồng bộ hóa các tập tin trên tất cả các PC.


Đó là điều tương tự tôi làm trên máy tính để bàn Linux của mình. Việc thiết lập một loạt các máy chủ ảo dễ dàng hơn nhiều so với việc xử lý các tệp / đẩy / sau đó hoàn nguyên cục bộ.
Tim Post

Nghe hay đấy, tôi sẽ thử.
Don Kirkby

"Điều này không hoạt động để kiểm tra tốt từ các máy khác" - Nếu bạn sử dụng tên miền phụ thay vì TLD, vd. local.example.com, bạn có thể thiết lập Abản ghi này dưới dạng bản ghi trong DNS, không cần chỉnh sửa tệp HOSTS (nếu bạn được kết nối với internet) và điều này sẽ hoạt động cho tất cả các máy (bao gồm cả thiết bị di động) trên mạng cục bộ. Điều này cũng cho phép bạn tách riêng cookie phát triển / sống nếu bạn muốn.
MrWhite
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.