2009-08-20 35 views
19

Tôi đang cố gắng viết một quy tắc .htaccess để chuyển hướng đến tập lệnh, điều này sẽ chuyển hướng đến một nơi khác. Loại giống như cách trình rút ngắn URL hoạt động. Tuy nhiên, tôi không muốn thanh địa chỉ thay đổi trong phần .htaccess của chuyển hướng. (Đó là okay cho kịch bản chuyển hướng đến thay đổi vị trí.).htaccess chuyển hướng mà không thay đổi thanh địa chỉ

Tôi đang sử dụng mod_rewrite, hiện đang làm điều này:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteBase/
RewriteRule (.+)$ "?url=$1" [L,R=301] 

Có một lá cờ này hay cách khác phương pháp tôi có thể sử dụng để đạt được những gì tôi cố gắng làm?

Addenda: Thanh vị trí không thay đổi trong Firefox khi các chuyển hướng đang diễn ra, đó là những gì tôi muốn làm. Nó chỉ thay đổi một lần để phản ánh điểm kết thúc. Safari thay đổi nó ở mọi bước. Có cách nào để tránh điều đó không?

Trả lời

39

Nếu bạn đang sử dụng cờ R bạn đang nói mod_rewrite rằng chuyển hướng bên ngoài là thứ bạn muốn, do đó trình duyệt được yêu cầu tạo yêu cầu mới và thanh địa chỉ sẽ thay đổi tương ứng.

Không có cờ R, không có chuyển hướng, nhưng viết lại yêu cầu nội bộ Apache bị ẩn khỏi trình duyệt. Do đó, thanh địa chỉ sẽ không thay đổi. Tuy nhiên, bạn không thể sử dụng chuyển hướng nội bộ sang các URI bên ngoài vì các lý do rõ ràng.

Vì bạn dường như sử dụng một chuyển hướng nội bộ dù sao, chỉ cần loại bỏ các R cờ và nó cũng làm việc:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.+)$ ?url=$1 [L] 
+0

Ah! Điều đó giải quyết nó. Lỗi của tôi. Cảm ơn! – aditya

+2

Đối với URI bên ngoài, bạn có thể ủy quyền nó bằng cách sử dụng cờ [P] –

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