我正在我的网站上写自己的新闻文章部分,并将每篇文章存储在mysql数据库中。每篇文章都有一个唯一的id,一个标题,主体,并且感谢jquery插件,它是自己的url友好的slug。
但是,我不确定在连接到slug时我是如何获取文章的。
我如何得到:
www.site.com/news/nice-looking-title/
像:
一样工作www.site.com/news/index.php?id=1
这样我就可以使用SQL从MySQL表中获取记录,例如:
tbl_news:
news_id
news_title
news_slug
news_body
news_date
是否涉及执行此操作的.htacccess?
与以往一样,所有和任何帮助都非常感谢! :)
保
答案 0 :(得分:0)
您需要更改SQL查询以通过news_slug而不是news_id进行选择。一个简单的应用程序可以如下:
<强>的.htaccess 强>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/news #only do this for URLs beginning /news
RewriteRule (.*) /news/index.php [L] #redirect control to index.php
<强> PHP 强>
$slug = explode('/', $)SERVER['REQUEST_URI']); // turn the path into an array
$slug = $slug[2]; // get the 2nd part of the array (nice-looking-title)
$query = sprintf ("SELECT * FROM tbl_news WHERE news_slug = '%s'", $slug); // new SQL query
注意:这个没有被测试过可能有错误!
答案 1 :(得分:0)
好的,我必须做的就是解决这个问题。有点hacky,但它确实有效。
让RewriteRule(。*)/ news / index.php在网站上引起无限循环,就像在新闻目录中拥有php页面一样。所以我不得不发送到不同目录名的链接,并将它们重写到实际目录。
<强>的.htaccess 强>
RewriteCond %{REQUEST_URI} /guild-news
RewriteRule guild-news/(.*)/ news/news-item.php?slug=$1
RewriteRule guild-news/(.*) news/news-item.php?slug=$1
<强> PHP 强>
$slug=$_GET['slug'];
$newsSQL = "SELECT *, DATE_FORMAT(news_date, '%W, %D %M, %Y') news_date_f FROM tbl_news WHERE news_slug = '".$slug."' AND news_visible=1";
$result = mysql_query($newsSQL, $conn) or die(mysql_error());
所以可能不是最好的代码,但它确实能够满足我的需求:)