如何在php网址中添加ID和标题

时间:2019-02-23 13:19:04

标签: php url

我有一个可以与sub_id一起正常工作的URL,但是现在我想修改该URL,并且要显示“ sub_categories_name”和“ sub_id”。但是,“ sub_categories_name”就像虚拟对象一样,即没有用,如果一个人仅使用“ sub_id”搜索,它将显示结果。

我已经尝试过类似的操作,但是页面未显示任何数据

<?php 
  $categories_name = $_GET['categories_name'];
  $result = "SELECT * FROM sub_categories where 
    categories_name='$categories_name'";
    $data =mysqli_query ($conn, $result);
    while ($row = mysqli_fetch_array($data))
    { 

      $sub_categories_name = $row['sub_categories_name'];
      $sub_id = $row['sub_id'];

        $sub_categories_name  = urldecode($sub_categories_name );  
        $sub_categories_name = str_replace(' ', '-', $sub_categories_name); 

        $url = '/classified/' . urlencode($sub_id) . '-' . urlencode($sub_categories_name);

    ?>
<a href="/classified/1-Health-and-Beauty">
    <div class="cat-box p-0 m-0 cat-url">
        <p class="subcat-url"><?php echo $sub_categories_name;?></p>
    </div>
</a>
<?php }?>

当我的网址类似'http://localhost/classified/1'时,它显示的数据,但是当我的网址类似'http://localhost/classified/1-Health-and-Beauty'时,它不显示任何数据。我也只想显示数据。

这是我的{DOCUMENT_ROOT}/classified/.htaccess

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ category-classifieds.php?sub_id=$1 [L]
HTML链接的

实际生成的源代码片段。 (浏览器视图源)就像

<a href="/classified/1-Health-and-Beauty">
    <div class="cat-box p-0 m-0 cat-url">
        <p class="subcat-url">Health and Beauty</p>
    </div>
</a>

提前谢谢,请帮帮我。

1 个答案:

答案 0 :(得分:0)

正如评论中已经提到的,您必须在项目中的某个地方对$_GET['sub_id']做出决定。如果改用intval($_GET['sub_id']),则数字后的所有内容都会被切断。

基于mod_rewrite,您可以将规则更改为

RewriteRule ^(\d+) category-classifieds.php?sub_id=$1 [L]

表示基于文件夹的当前URL部分开头的1个或多个数字,而忽略数字之后的任何内容。