2010-01-12 18 views
21

Tôi muốn có tệp .htaccess chỉ định một RewriteBase khác nhau tùy thuộc vào tệp .htaccess có trên máy cục bộ của tôi hay trên máy chủ web. Đây là mã mod_rewrite tôi đã cố gắng, tuy nhiên, nó đã không làm việc:Với mod_rewrite tôi có thể chỉ định một RewriteBase trong RewriteCond không?

RewriteCond %{HTTP_HOST} ^localhost:8080 
RewriteBase /example/ 
RewriteCond %{HTTP_HOST} ^www.example.com 
RewriteBase/

Điều này sẽ có ích cho dễ dàng xem trước một số trang web trên máy tính địa phương của tôi và sau đó có thể tải lên các trang web đến các máy chủ web cho tên miền cá nhân tên.

Trả lời

30

Giải pháp duy nhất chúng tôi cuối cùng tìm thấy trông giống như rằng:

# Activation of the URL Rewriting 
Options +FollowSymlinks 
RewriteEngine On 

# RewriteBase equivalent - Production 
RewriteCond %{HTTP_HOST} !^localhost$ 
RewriteRule . - [E=REWRITEBASE:/production/path/] 

# RewriteBase equivalent - Development 
RewriteCond %{HTTP_HOST} ^localhost$ 
RewriteRule . - [E=REWRITEBASE:/development/path/] 

# Rewriting 
RewriteRule ^(.*)$ %{ENV:REWRITEBASE}index.php?page=$1 [L] 

Mã này cung cấp một cách để mô phỏng differents "RewriteBase".

+1

Tuyệt vời. Cảm ơn! – Matthew

+0

Bạn có thể tìm ra lý do tại sao «RewriteBase' có điều kiện không hoạt động? Tôi đang đối phó với cùng một vấn đề vào lúc này. – cballenar

Các vấn đề liên quan