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
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
Bài liên quan
pác xem 2 cái bôi đen ý ...
RewriteRule ^(.*) index.php?t=$1
RewriteRule ^(.*)/(.*)/(.*)/(.*) index.php?t=$1&route=$2/$3&path=$4
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...