mod_rewrite我错过了什么?

时间:2011-02-13 14:38:24

标签: php mysql .htaccess mod-rewrite

我的.htaccess文件中有以下内容:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/$ /index.php?p=$1 [L]

这会更改

中的网址
http://domain.com/index.php?p=101

http://domain.com/101/

这一切都很好。但!在我的index.php中,我有一段代码来列出这样的链接:

//getting links
$sqlLinks = "SELECT pid, linkh1 FROM pages WHERE draft= '0' AND pid > 100 ORDER BY linkh1 ASC"; 

$query = mysqli_query($myConnection, $sqlLinks) or die (mysqli_error()); 
$Links = '';
while ($row = mysqli_fetch_array($query)) { 
    $pid = $row["pid"];
    $linklabel = $row["linkh1"];  

$Links .= '<li><a href="http://domain.com/index.php?p=' . $pid . '">' . $linklabel . '</a></li>>  

当我点击或将鼠标悬停在某个链接上时,它仍会显示

http://domain.com/index.php?p=101 link.  

我不明白的是如何将自动的所有链接显示为:

http://domain.com/101/  
http://domain.com/102/  
http://domain.com/103/  
etc...

2 个答案:

答案 0 :(得分:3)

.htaccess文件路由传入请求。

要重写外向链接,为什么不正确格式化呢?

$Links .= '<li><a href="http://domain.com/' . $pid . '">' . $linklabel . '</a></li>' 

答案 1 :(得分:0)

mod rewrite只负责重写你的请求。

它与您在网站上输出的HTML代码无关。

有些模块可以进行后期处理和处理,但它们很少见

通常的方法是按照您希望的方式打印链接