我喜欢stackoverflow提供问题链接的方式,就像这个问题的链接https://dev59.com/eVfUa4cB1Zd3GeqPFjEK
,其中问题标题是seo-friendly-url
我正在创建一个博客,希望以与SO相同的方式提供链接,如何在PHP中实现?
欢迎任何建议 :)
表结构
- ID
- Title
- Tags
- Category
- UID
添加时间
我使用的是PHP/APACHE而没有框架!我不想使用任何博客系统,想要自己创建
我喜欢stackoverflow提供问题链接的方式,就像这个问题的链接https://dev59.com/eVfUa4cB1Zd3GeqPFjEK
,其中问题标题是seo-friendly-url
我正在创建一个博客,希望以与SO相同的方式提供链接,如何在PHP中实现?
欢迎任何建议 :)
表结构
添加时间
我使用的是PHP/APACHE而没有框架!我不想使用任何博客系统,想要自己创建
您需要的是 mod_rewrite
,这是一个用于URL重写的Apache模块。
在您的 .htaccess 文件中(您可能需要创建它),请添加以下内容:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^blog\/([0-9]+)\/.*$ /blog.php?post=$1 [L]
</IfModule>
/blog/10/任何文本/
时,背后的情况与访问/blog.php?post=10
相同。
括号中的([0-9]+)被称为正则表达式(或regex),匹配任何数字。 .*
表示匹配任何内容。 ^
锚定到查询的开头,$
锚定到结尾。 斜杠(/)被转义为\/
。/blog/10/any-old-bit-of-text/
也不起作用:(我将.htaceess和blog.php文件放在根目录的子目录下) - Sourav首先,您没有写明使用哪个框架。我将在Symfony框架上描述您想要做的事情。
第一种解决方案
http://www.symfony-project.org/jobeet/1_4/Doctrine/en/05#chapter_05_route_customizations
您可以通过声明sluging函数并在路由中直接使用它来增强解决方案
第二种解决方案
使用任何已经支持它的博客解决方案 - 如ceejayoz所写
你可以同时使用PHP和Apache。具体来说,是使用Apache的Forcetype功能。这篇文章解释了如何使用Forcetype。
假设你有一个像这样的URL:http://www.example.com/article/seo-friendly-example
.htaccess文件应该是这样的:
<Files article>
ForceType application/x-httpd-php
</Files>
PHP代码大概长这样:
<?php
list(,$slug) = explode("/", $_SERVER['REQUEST_URI']);
?>
$slug
的值将是seo-friendly-example
。这将是您数据库中该文章的一个关键。
mod_rewrite
就是您的好朋友。 - zerkms