(假设你使用Apache作为Web服务器)
在这个答案非常类似的问题请看:https://stackoverflow.com/a/8030760/851273
这里的问题是,和的.htaccess mod_rewrite的不知道如何将页面名称映射到art_id,所以有两种方法可以尝试执行此操作。
- 您可以向
read.php
添加一些功能,以便它可以做一个类似的查找,但不是art_id
,它使用art_title
什么的。基本上你必须做一个数据库的后端查询(或者你的文章存储在哪里),并使用标题作为关键字而不是ID。这有点混乱,因为可能在标题中包含非ASCII字符或保留字符(例如?
),所以您需要在将标题从数据库中拉出时或创建标题时创建标题编码器和解码器使用标题查找数据库中的文章。
如果您有权访问服务器配置或vhost配置,您可以设置RewriteMap using an outside program(类型)并创建一个php脚本,为您执行标题到ID查找。然后,你可以创建你的.htaccess,做线沿线的一些重写规则:
RewriteRule ^blog/(.*)$ /blog/read.php?art_id=${title-to-id:$1} [L]
当你提取你漂亮的URL文章标题,并通过名为冠军TO-重写地图喂养它id以获得art_id。同样,您需要设置一个标题编码器/解码器,以便您的字幕可以处理非ascci和保留字符。
,你可以做的另一件事情是要坚持一个文章的ID在你漂亮的网址,让他们看起来像这样:http://mywebsite.com/blog/11-Why-do-Australians-pay-so-much-for-Cars。这很容易看到链接是什么,它是SEO友好的,它绕过了做标题到ID查找的需要。重写规则也同样简单:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# add whatever other special conditions you need here
RewriteRule ^blog/([0-9]+)-(.*)$ /blog/read.php?art_id=$1 [L]
就是这样。当然,您现在必须生成所有博客URL,格式为:http://(host)/blog/(art_id)-(art_title)
,您还必须从标题中删除特殊字符,但不必担心编写其他代码将标题翻译回ID。
很好的答案谢谢你,没有工作..主要是因为我没有理解最后一段。但是,将士兵投票,并选择最好的答案 – 422 2012-07-15 02:38:33
@ 422我只是说,当你生成链接到你的博客,包括art_id在其中,使它像'http://mywebsite.com/blog/11-为什么要做澳大利亚人为汽车付出很多钱 – 2012-07-15 03:34:38
是的,我必须改变其他东西吗?因为我将最后一个代码块添加到了我们的htaccess(博客内)文件夹中,并且没有任何更改。我在想..我错过了更多相关的东西 – 422 2012-07-15 03:42:19