Tôi có một dự án chạy cục bộ trên WampServer. Đó là một cấu trúc giống như MVC; nó ghi lại URL thành index.php?url=$1
. Full .htaccess
:URL tuyệt đối từ thư mục cơ sở với viết lại
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Khi tôi muốn gửi người dùng đến một trang khác sử dụng PHP location: <location>
nó không làm điều này đúng vì viết lại (tất cả-mặc dù tôi về mặt kỹ thuật luôn trong index.php
).
Ví dụ nếu tôi về http://localhost/project_name/controller/method/
và constructor hoặc phương pháp của bộ điều khiển này cố gắng gửi cho tôi để:
header('location: another_controller/method');
gửi cho tôi đểhttp://localhost/project_name/controller/method/another_controller/method/
header('location: /another_controller/method');
gửi cho tôi đểhttp://localhost/another_controller/method/
Nhưng tôi muốn gửi cho tôi như thế này:
header('location: /another_controller/method');
gửi cho tôi đểhttp://localhost/project_name/another_controller/method/
Bây giờ là giải pháp duy nhất mà tôi đã tìm thấy là:
define('BASE_URL','http://localhost/project_name');
header('location: '.BASE_URL.'/another_controller/method/');
Nhưng điều này không phải là hoàn hảo hoặc vì nó gây ra tôi phải thay đổi điều này được xác định liên tục BASE_URL
bất cứ khi nào tên miền hoặc tên thư mục thay đổi. Tôi cũng có thể tạo một phương thức trong số BaseController
tạo URL tuyệt đối, nhưng phương pháp này về cơ bản cũng chỉ cần thêm BASE_URL
nữa.
Lưu ý: Vấn đề tương tự không xảy ra với src
và href
thuộc tính HTML, mà có thể sử dụng đường dẫn tương đối (không có project_name
thư mục trong đường dẫn). Tôi không hiểu tại sao. Bởi vì nếu tiêu đề location
khiến trình duyệt thêm URL tương đối vào vị trí hiện tại, tại sao nó không có cùng hành vi khi tìm kiếm các tệp .css
hoặc .js
.
Vậy ... này đặt ra một vài câu hỏi cho tôi:
- Tôi sẽ phải vấn đề này nếu tôi có máy ảo?
- Cách tốt nhất để giải quyết vấn đề này là gì?
- Tốt nhất là chỉ cần có URL tuyệt đối đầy đủ?
- Tại sao các thuộc tính
src
vàhref
của HTML không chia sẻ hành vi này?
bạn có thể thêm một số mã của tệp htaccess của mình không? –
@HarshSanghani Đã thêm. – kgongonowdoe
bạn có thể vui lòng thêm RewriteBase/project_name/sau RewriteEngine trên –