10/10/2018, 09:39

Lỗi khi rewrite url

- Em có cái file .htaccess như thế này:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?t=$1
RewriteRule ^(.*)/(.*)/(.*)/(.*) index.php?t=$1&route=$2/$3&path=$4


- Nếu bỏ 1 trong 2 dòng cuối cùng thì nó chạy ngon nhưng nếu để cả 2 dòng cuối cùng thì nó không chạy được cái nào cả. Không biết vì sao ?
- Xin hỏi nếu muốn rewrite nhiều URL khác nhau thì viết lặp lại nhiều lần lệnh "RewriteRule" phải không ? Em thấy viết 1 lệnh thì nó chạy, viết từ 2 lệnh trở lên thì nó không chạy được!
- Các Pro chỉ giáo với !
- Thanks
kenphan19 viết 11:52 ngày 10/10/2018
về học regular expression đi pác .. viết thế sao chạy nổi trời ...
pác xem 2 cái bôi đen ý ...
RewriteRule ^(.*) index.php?t=$1
RewriteRule ^(.*)/(.*)/(.*)/(.*) index.php?t=$1&route=$2/$3&path=$4
deculong viết 11:49 ngày 10/10/2018
Em đã làm thử và thấy nó chạy rồi, chỉ có điều không hiểu là vì sao nó chỉ chạy khi chỉ có 1 trong 2 dòng cuối còn khi có cả 2 dòng cuối thì nó không chạy được!!!
kenphan19 viết 11:50 ngày 10/10/2018
giải thích tẹo về regular expression (so mẫu)
dấu ^ chỉ ký tự bắt đầu
đoạn (.*) là lấy tất cả các ký tự
như thế khi chạy cái đoạn của pác
RewriteRule ^(.*) index.php?t=$1
RewriteRule ^(.*)/(.*)/(.*)/(.*) index.php?t=$1&route=$2/$3&path=$4
thì mâu thuẩn xảy ra ... đoạn ở trên cũng bắt đầu bằng bất kỳ ký tự nào và ở dưới cũng bất kỳ cứ tự nào ... thế thì apache biết cái nào là link ảo ... ?
nếu bạn sửa thế này:
RewriteRule ^a(.*) index.php?t=$1
RewriteRule ^b(.*)/(.*)/(.*)/(.*) index.php?t=$1&route=$2/$3&path=$4
bạn chạy thử câu lệnh trên bất đầu bằng từ a và đoạn dưới bắt đầu từ b thì có thể nó sẽ okie ... ^^ chưa test kaka...
thuankkk viết 11:45 ngày 10/10/2018
Code:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)$ index.php?t=$1 [L]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+) index.php?t=$1&route=$2/$3&path=$4
deculong viết 11:55 ngày 10/10/2018
Thankssssssssssssssssssssssssssssssssssssssssss !
Bài liên quan
0