SEO友好的URL - 从blog.php?articleId = 26到blog / $ articleTitle
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SEO友好的URL - 从blog.php?articleId = 26到blog / $ articleTitle相关的知识,希望对你有一定的参考价值。
在最终获取我的代码以向我的数据库发布一个URL友好的标题(以后用作SEO优化的URL)之后,我现在正在研究如何让我的博客脚本接受所述URL。
理想情况下,我希望我的URL以类似的方式出现堆栈溢出。
目前我的网址是这样的:
blog.php?action=viewArticle&articleId=26
我希望它看起来像这样:
/blog/responsive-layout-design/
我已经整理了脚本的一面 - 创建新URL的一面,并将其保存在数据库中,但我正在努力研究如何在前端实现它。
我看了几个指南和示例,但它们只显示了如何创建URL,例如:
store.php?action=viewItem&itemID=34 to store/item/34
显然,我可以使用我的URL相当容易地做到这一点,但它仍然只是显示文章ID,而不是文章标题。
这是我目前通过ID从数据库中提取文章的代码 - 如何修改它以获得我正在寻找的功能?
function viewArticle() {
if ( !isset($_GET["articleId"]) || !$_GET["articleId"] ) { homepage(); return; }
$results = array();
$results['article'] = Article::getById( (int)$_GET["articleId"] );
$results['pageTitle'] = $results['article']->title . " | Blog";
require( TEMPLATE_PATH . "/viewArticle.php" );
}
我一直这样做的方法是在数据库中设置URL slug。
所以你会存储类似的东西:
tblBlog
blogID | blogTitle | blogContent | blogURLSlug
然后,您可以使用.htaccess设置漂亮的URL
RewriteRule ^/(blog)/(.*)/$ /blog.php?slug=$2
选择页面内容时,请改为使用URLSlug
$stmt = $dbh->prepare("SELECT `blogTitle`, `blogContent` FROM `tblBlog` WHERE `blogURLSlug` = :slug");
$stmt->bindParam(':slug', $_GET['slug']);
$stmt->execute();
$blogData = $stmt->fetch();
这样,您可以访问/blog/RWD-is-cool/
,它将从URL中选择URLSlug = RWD-is-cool
您不需要数据库来执行此操作。所有的PHP框架(我都知道)支持这种类型的URL和用于识别什么是所谓的路由的方法。基本上,网址的结构是以下www.website.com/controller(page)/method/getparameters
。您用来访问它的是单个入口点。换句话说,您只在根目录中有1个index.php
文件,并将所有调用重定向到它,然后将URL分解为其给定的组件,并决定从那里开始做什么。一个简单的apache示例:
的.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php [L,NS]
的index.php
$page = str_replace('index.php','', $_SERVER['PHP_SELF']);
$page = str_replace($page,'',$_SERVER['REQUEST_URI']);
$page = explode('/',$page );
$controller = array_shift($page );
$parameters = array();
foreach ($page as $val){
$parameters[] = urldecode($val);
}
然后在网址www.website.com/blog/responsive-layout-design/
你会有
$controller => 'blog'
$parameters => array(
0 => 'responsive-layout-design',
1 => ''
)
希望这很有帮助。
以上是关于SEO友好的URL - 从blog.php?articleId = 26到blog / $ articleTitle的主要内容,如果未能解决你的问题,请参考以下文章
Yii2 301 从原始 url 重定向到 .htaccess 中对 SEO 友好的 url 不起作用,需要其他解决方案
从 php 和 sql 创建动态自动递增的 seo 友好 url
使用 Codeigniter 重定向 SEO 友好的 url?