我该如何制作干净的网址?

时间:2014-02-01 08:31:46

标签: php .htaccess url

我想为我的网站制作干净的网址。如何更改htaccess文件。我原来的链接

这是我原来的链接

  **http://www.tangailbazar.com/adview_details.php?ID=9014&show=Hot%20and%20Cool%20Water%20Filter**

我想这样做

    http://www.tangailbazar.com/Hot-and-Cool-Water-Filter

我的代码在这里。

   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule /^(.*) adview_details.php?show=$1 [PT,QSA]

我的帖子链接从哪里得到像这样的值

    <a href="view-items-details.php?ID=<?php echo $row['sl'];?>&show=<?php echo $row['title'];?>">View Details</a>

在adview_details页面中,我编写了代码

    <?php


   $id=$_GET['ID'];
   $id1=$_GET['show'];

   ?>
   <?php 
   $SQL="select * from tb_classified where sl='$id' and title='$id1'";
   $obj->sql($SQL);

    while($row = mysql_fetch_array($obj->result))

    {

  echo $row['title'];
      echo $row['description'];
  }
  ?>

3 个答案:

答案 0 :(得分:0)

您正在寻找名为mod_rewrite的Apache mod。具体而言(来自文档):

  

另一方面,如果您希望将请求的URI作为查询字符串参数传递给index.php,则可以将该RewriteRule替换为:

RewriteRule (.*) adview_details.php?show=$1 [PT,QSA]
  

请注意,这些规则集可以在.htaccess文件中使用,也可以在块中使用。

答案 1 :(得分:0)

首先引起我注意的是你的常规网址不是那么干净。我建议你删除空格并更改连字符 - 如果可能的话。 URL也不区分大小写,因此实际上没有使用大写字符,但使用它们是个人偏好,虽然它使它们更不易读,并且当重写它时是一个额外的过程来更改它们。

重写网址时,您应该将您的网址视为部分。域名分为:子域名(www),域名(tangailbazar)和顶级域名(com)。域名开始清理后(您也可以在域名上进行大量重写,但在您的情况下,您不会这样做。)

为了使重写过程清晰简单(因为使用mod_rewrite重写URL会让人头疼),您希望重写的URL(斜杠之间)的每个部分都转换为原始URL中的参数。因此,在您的情况下:ID=9014&show=Hot and Cool Water Filter是应该在您的干净URL中使用的两个参数。重写URL时,您将选择key(参数)IDshow的值,并在干净的URL中使用它们。在您的情况下,您需要干净URL中的ID参数,否则您永远不能加载目标URL。

RewriteRule ^.+/(.+)/(.+)+$ adview_details.php?ID=$1&show=$2 [L]

此规则将更改以下请求:

www.tangailbazar.com/9014/Hot%20and%20Cool%20Water%20Filter

成:

www.tangailbazar.com/adview_details.php?ID=9014&show=Hot%20and%20Cool%20Water%20Filter

在这种情况下,这是您可以做的最好的事情,否则您将不得不更改目标网址结构的一些内容。

您需要掌握的一件重要事情是URL重写的名称具有误导性,您实际上不会重写任何内容,您将请求的URL从浏览器转换为您所在页面所在的URL。所以它更像是“URL翻译”,然后是“URL重写”。在创建用户友好的URL时,您大部分时间都是从URL中删除参数键(show =)和文件扩展名(.php)以使其更具可读性。

您将始终需要使用URL中的动态部分,并且可以清理静态部分。

我希望这可以帮助您解决问题,或者至少在重写网址时做一些事情。

祝你好运!

答案 2 :(得分:0)

<?php 
$title = str_replace(' ', '-', $row['title']) 
?>
<a href="<?php echo "/".$title ;?>">View Details</a>

输出网址http://www.tangailbazar.com/Hot-and-Cool-Water-Filter 但这不起作用,为什么?因为你不能用一个条件创建一个url,而对于mysql的请求需要两个条件。 也许你应该将你的网址改为http://www.tangailbazar.com/1/Hot-and-Cool-Water-Filter 如果您遵循我的建议,您应该更改代码。 htaccess成为

RewriteRule ([0-9]?)/([a-zA-Z_-]+) adview_details.php?ID=$1&show=$2 [PT,QSA]

以及您应该使用的网址

<a href="<?php echo "/".$row['sl']."/".$title ;?>">View Details</a>
相关问题