使用id和clean url重写时,分别检索id和url

时间:2017-10-07 13:14:17

标签: php url-rewriting

我想让我的网址看起来像:

mysite.com/news/25-my-first-article

我的.htaccess中有这个:

RewriteRule ^news/([a-zA-Z-0-9-]+)$ article-detail.php?id=$1&slug=$2 [NC,L]

和我的href:

<li><a href="news/{$id}-{$slug}">{$title} <i class="icon arrow_right"></i></a></li>

就我所见,这是正常的。如果我点击链接,网址会显示我想要的内容。我遇到的问题是我无法将id和slug转换为单独的值。

如果我回应:

<?php echo $_GET['id']; ?>
然后,而不仅仅是获得像#&#34; 7&#34;或&#34; 25&#34;或者其他什么,我得到25-my-first-article

我只想要实际的id值,这样我就可以在数据库中查找了。

2 个答案:

答案 0 :(得分:1)

您需要将两个值捕获到不同的组中:

RewriteRule ^news/([0-9]+)-([a-zA-Z-0-9-]+)$ article-detail.php?id=$1&slug=$2 [NC,L]

或者,您可以忽略第二部分:

RewriteRule ^news/([0-9]+)-[a-zA-Z-0-9-]+$ article-detail.php?id=$1 [NC,L]

但是,我会使用(这会占用前面的所有数字并忽略其余数字):

RewriteRule ^news/([0-9]+).*$ article-detail.php?id=$1 [NC,L]

答案 1 :(得分:-1)

使用以下代码

<?php $data=$_GET['id'];$temp=explode("-",$data);echo $temp[0];// you get Id ?>