10/10/2018, 10:32

Giúp đỡ mình về Rewrite-Url trong php với

Mình mới nghiên cứu về php nên còn rất gà, có câu hỏi nào ngớ ngẩn mong các bạn bỏ qua nha.
Mình có thư mục gốc là hocphp nằm trong htdocs (server xampp) trong đó mình có các file (index.php, exp3.php, rewrite.htaccess)
Mình đã vào httpd.conf để bỏ # trước rewrite
và nội dung demo các file của mình như sau:
- file rewrite.htaccess
Code:
RewriteEngine on
RewriteBase /hocphp
RewriteRule ^topic_([0-9]*).html index.php?topic=$1
- file index.php
Code:
<a href='index.php?topic=1'>Click Here !</a>

<?php
switch($_GET['topic'])
{
case 1 : include("exp3.php");
break;
}
?>
- file exp3.php
Code:
<?php
$str="Xin Chào PHP !";
echo "<center>".$str."</center>";
?>
Nhưng khi mình bấm vào liên kết Click Here ! thì trên thanh địa chỉ vẫn hiện http://localhost/hocphp/index.php?topic=1
đáng nhẽ phải là thế này http://localhost/hocphp/topic_1.html thì mới đúng ý mình
Bạn nào biết sai chỗ nào chỉ mình với, hoặc có đoạn code nào demo có thể send cho mình để mình tự mổ sẻ cũng được.
wantlove viết 12:46 ngày 10/10/2018
bạn phải sửa trong thẻ <a>


<a href='index.php?topic_1.html'>Click Here !</a>

<?php
switch($_GET['topic'])
{
case 1 : include("exp3.php");
break;
}
?>
pcdinh viết 12:47 ngày 10/10/2018
Bạn hiểu sai bản chất của cơ chế rewrite. mod_rewrite chỉ map đường dẫn ảo thành đường dẫn thực thôi. Bạn đang làm ngược với khả năng của nó
newmem90 viết 12:46 ngày 10/10/2018
Được gửi bởi pcdinh
Bạn hiểu sai bản chất của cơ chế rewrite. mod_rewrite chỉ map đường dẫn ảo thành đường dẫn thực thôi. Bạn đang làm ngược với khả năng của nó
vậy giờ mình muốn khi Click Here ! thì trên thanh địa chỉ hiển thị http://localhost/hocphp/topic_1.html
thay vì hiển thị http://localhost/hocphp/index.php?topic=1 rất là dài và xấu xí thì làm sao được bạn?
pcdinh viết 12:36 ngày 10/10/2018
<a href='index.php?topic=1'>Click Here !</a> <-- đây là đường dẫn thực

<a href="topic_1.html">Click Here !</a> <-- đây là đường dẫn ảo

Bạn cung cấp 1 đường dẫn ảo cho user và sau đó mod_rewrite sẽ map nó về đường dẫn thực
newmem90 viết 12:38 ngày 10/10/2018
Mình đã sửa lại rồi
-file rewrite.htaccess
Code:
RewriteEngine on
RewriteBase /hocphp
RewriteRule ^post/([0-9]*) index.php?id_post=1
-file index.php
Code:
<a href='post/1990'>Click Here !</a>

<?php
switch($_GET['id_post'])
{
case 1 : include("exp3.php");
break;
}
?>
-file exp3.php
Code:
<?php
$str="Xin Chào PHP !";
echo "<center>".$str."</center>";
?>
Mình bấm vào liên kết nhưng nội dung trang exp3.php không được include vào. Cụ thể mình sai chỗ nào, bạn có thể chỉ cho mình biết được không, nản quá. T_T
hoanghon2005 viết 12:43 ngày 10/10/2018
theo như mình hiểu thì mỗi RewriteRule ^post/([0-9]*) index.php?id_post=1 chỉ áp dụng cho một trang vậy mấy ngàn trang thì phải viết mấy ngàn dòng á. Có cách nào nhanh hơn không
thuyduongcd viết 12:36 ngày 10/10/2018
Được gửi bởi hoanghon2005
theo như mình hiểu thì mỗi RewriteRule ^post/([0-9]*) index.php?id_post=1 chỉ áp dụng cho một trang vậy mấy ngàn trang thì phải viết mấy ngàn dòng á. Có cách nào nhanh hơn không
Đọc kỹ tài liệu về .htaccess đi sẽ không còn th8ác mắc như vậy nữa
Bài liên quan
0