Tôi đang cố gắng sử dụng RewriteRules trong .htaccess
với đường dẫn tương đối, nhưng Apache dường như muốn xuất ra đường dẫn vật lý thay vì đường dẫn máy chủ bất cứ khi nào tôi cố gắng tạo đường dẫn tương đối. Đường dẫn tuyệt đối và máy chủ gốc hoạt động tốt. Ví dụ:Tại sao RewriteRule của Apache tiết lộ các đường dẫn cục bộ?
RewriteEngine On
# this works fine, 127.0.0.1/ab redirects to 127.0.0.1/cd
RewriteRule ^ab$ /cd [R]
# this doesn't work... 127.0.0.1/wx redirects to 127.0.0.1/C:/path/to/files/yz
RewriteRule ^wx$ yz [R]
Thêm một "RewriteBase /
" giải quyết vấn đề, nhưng nó tẻ nhạt để thêm đường dẫn đến mỗi .htaccess
, và nó làm cho nó khó khăn hơn để thay đổi cấu trúc thư mục. Có lý do RewriteBase mặc định cho đường dẫn vật lý hiện tại thay vì đường dẫn URI hiện tại không?
Tôi muốn chuyển hướng thực sự đến đường dẫn mới - Tôi đang sử dụng điều này để tạo URL tắt và sửa lỗi chính tả. Có cách nào để tránh đặt RewriteBase theo cách thủ công trong mọi tệp .htaccess không? – zildjohn01
Nói chung, bạn không cần thay đổi 'RewriteBase'. Chỉ cần sử dụng đường dẫn tương đối cho đường dẫn nội bộ và tuyệt đối cho các chuyển hướng bên ngoài. – Gumbo
Bạn có thể minh họa ý của mình không? Trong mã của tôi, tôi đã sử dụng một đường dẫn tương đối cho một chuyển hướng nội bộ, và nó kết thúc với hành vi không mong muốn mà tôi đã mô tả. – zildjohn01