没有视图模板内的网址的网址

时间:2017-06-20 13:37:39

标签: php

我正在创建一个简单的wordpresslike cms,并将页面的所有部分保存在表中,然后使用名为view.php的模板页面加载它们,后跟$ _GET变量,例如:

sky.com/view.php?article=how-to-do-something

但正如我在wordpress网站上看到的那样,url中没有'view.php'模板文件和$_GET变量。有纯文字域名和文章标题。

我认为这是SEO引擎的更好方法。

执行此操作的一般方法是什么?如何使用相同的方法。是否有一个函数可以在飞行中创建文件,或者可能是一个隐藏的文件系统......

stackoverflow.com相同。 url中没有视图模板,但我更确定它使用数据库表来存储页面的各个部分。

我尝试使用.htaccess文件和this accepted solution,但收到错误500 - 内部服务器错误。

1 个答案:

答案 0 :(得分:1)

作为解释; stackoverflow.com可能做的是这样的事情:

网址:

https://stackoverflow.com/questions/44654672/cms-without-view-template-inside-url

首先使用mod_rewrite重写实际网址,以便1)添加缺少的.php,以及2)设置GET参数:

RewriteEngine on
RewriteBase /

RewriteRule ^questions/([0-9]+) questions.php?qid=$1 [NC,L] 

因此questions.php页面会加载ID为44654672的问题。

上面的mod_rewrite说:从questions/开始获取网址,并将该网址发送到questions.php,并说:在问题/获取数字值之后,将其用作问题ID GET变量,以便PHP页面从数据库加载正确的问题。

网址中的措辞纯粹是出于搜索引擎优化的目的。

您会注意到https://stackoverflow.com/questions/44654672也会正确加载您的问题(*),但如果您更改数字值(即使保持字词相同,(例如https://stackoverflow.com/questions/44351172/cms-without-view-template-inside-url将从数据库加载另一个问题。

  • 将确切的网址链接放入我的回答中,使其显示问题标题而非网址

将其视为mod_rewrite正在对网址字符串执行 查找和替换 搜索。这就是全部。