我正在创建一个简单的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 - 内部服务器错误。
答案 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
正在对网址字符串执行 查找和替换 搜索。这就是全部。