10/10/2018, 10:25

Đường dẫn ảo trong PHP?

Chào các bác, em có vài thắc mắc về đường dẫn ảo (mod_rewrite) trong PHP nhờ các bác giải đáp:
File .htaccess
Code:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^.*$ - [L]
RewriteRule ^(.*)$ rewrite.php [L]
Các bác có thể giải thích cặn kẽ 5 dòng lệnh trên giúp em được không ạ? Ví dụ -d -s -[L] %{REQUEST_FILENAME} [OR].......

Khi test thử thì đường dẫn ảo sẽ gọi rewrite.php. Vậy trong PHP mình sẽ viết như thế nào nếu muốn lấy tiêu đề bài viết làm đường dẫn ảo?
Ví dụ: em có URL thế này http://site.com/index.php?id=1 => nó sẽ truy vấn bài 1 trong CSDL, trong bài 1 này có trường tiêu đề, giả sử nó là "bai1". Em muốn biến url http://site.com/index.php?id=1 thành http://site.com/bai1.html(đường dẫn ảo) thì trong rewrite.php mình sẽ viết như thế nào?

Em đọc bên sân chơi tuổi trẻ thì file .htaccess lại như thế này
Code:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
Các bác giải thích hộ cách làm này và cách làm với .htaccess ở trên!

Nếu cách trình bày của em quá lủng củng các bác không hiểu thì nói tóm lại thế này: em muốn tạo 1 đường dẫn ảo http://site.com/[tieu-de-bai-viet].html để thay cho đường dẫn thực http://site.com/index.php?id=[0-9]* thì mình sẽ khai báo trong file .htaccess như thế nào (và cả rewrite.php)

Note:
[tieu-de-bai-viet]: là tiêu đề của bài viết có id=[0-9]* được truy vấn trong CSDL.

Cám ơn các bác $______$
offur.com viết 12:37 ngày 10/10/2018
Code:
RewriteEngine on
RewriteRule ^([a-zA-Z0-9\-]{1,255})(\.html)$ rewrite.php?subj=$1 [L]
Code:
if(mysql_lung_tung_beng($_GET['subj']))
   header("Location: index.php?id=get_from_sql");
tuanna0104 viết 12:41 ngày 10/10/2018
bác offur.com có thể hướng dẫn chi tiết hơn được không ah. thanks
toannet viết 12:30 ngày 10/10/2018
B1 : tạo 1 file index.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<a href="pro/1/2">
Demo 1
</a>
</body>
</html>

B2 : tạo 1 file .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ module.php?p=$1&id=$2&type=$3 [L]

B3: tao 1 file module.php

<?php
$str = $_GET['p'];
$arr = explode("/",$str);

if($arr[0]=="pro"){
echo "Test" ;
}
?>
Sau do run file index.php se thay ket qua.

Nho bat chuc nang mod_rewrite
tuanna0104 viết 12:31 ngày 10/10/2018
nếu dùng host windows có làm theo cách này được không ah.
nnanh01 viết 12:40 ngày 10/10/2018
host nào cũng vậy, miễn bạn bật mod_rewrite trong php lên
thuankkk viết 12:26 ngày 10/10/2018
Được gửi bởi nnanh01
host nào cũng vậy, miễn bạn bật mod_rewrite trong php lên
apache
shrimp2t viết 12:36 ngày 10/10/2018
Được gửi bởi thuankkk
apache
Tìm file httpd.conf mở ra. Tìm dòng 196 bỏ # đầu tiên đi=>save =>xong
Bài liên quan
0