Hỏi cách remove folder trên uri
Hiện tại mình đang có 1 web test nhỏ với cấu trúc:
mvcorm/
–public/
----.htaccess (2)
----index.php
–.htaccess (1)
Nội dung các file như sau:
.htaccess (file 1)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
.htaccess (file 2)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [PT,L]
</IfModule>
index.php
<?php
$uri = $_SERVER['REQUEST_URI'];
echo $uri;
Khi chạy với link: domain.com/mvcorm/controller/method
Thì kết quả là:
/mvcorm/controller/method
cái mvcorm là folder chứa web của mình để test. Sau này chạy thật thì sẽ có 1 tên miền riêng dạng mvcorm.com/controller/method
Vấn đề là mình đang tìm cách lấy uri để tách controller, method,… ra nhưng hiện tại nó cứ có cái mvcorm đằng trước dẫn đến khó xử lý. Sau này nhỡ đặt folder khác, hoặc nó nhiều cấp dạng domain.com/a/b/mvcorm/controller/method thì rất khó xử lý. Các bạn cho hỏi điều chỉnh file .htaccess thế nào để khi chạy link domain.com/mvcorm/controller/method với web hiện tại đặt trong folder mvcorm thì nó cho mình cái uri là controller/method
Cảm ơn mọi người.
Nếu Route là cố định thì bạn dùng thử:
Như vậy không được bạn, với cái hiện tại thì thế là ok nhưng với url khác thì sẽ bị hỏng mất.
VD: domain.com/mvcorm/controller/method => ok
Nhưng mvcorm.com/controller/method => fail
Sao lại hỏng?
lúc nào mà nó chả có
count >= 2
?https://wandbox.org/permlink/RI2FQaGQ7Qn7YEpK
Ah nếu chỉ có controller vs method thì không sao nhưng nếu có cả các tham số nữa thì không được.
Dạng như mvcorm.com/controller/method/var1/var2/
Trường hợp này bạn parse
$_REQUEST
ra sẽ thấy cách giải quyết ngay thôi.Vì khi bạn rewrite URL, nó chạy toàn bộ vào trong
index.php
, mọi POST/GET đều chạy vào đó hết rồi, xử lí nó thôi.Uk vẫn biết là xử trong index.php nhưng không biết xử sao cho phù hợp với các url khác nhau để lấy được bắt đầu từ controller trở đi.
Edit:
Ok mình xử lý bằng cách cùi bắp là cắt tách chuỗi để lấy được từ controller rồi.
Bạn nào cùng cảnh thì có thể dùng thử. Có cách hay thì comment nhé.