我有幸在 Wordpress 源代码上达到顶峰;我想知道他们如何管理自定义 url 功能,但我无法真正理解。
wordpress .htaccess 文件中的重写规则只是将所有请求重定向到 index.php。
在那之后,这对我来说是一个谜:他们是如何example.com/this/title/is/cool/
匹配的index.php?p=233 ?
我有幸在 Wordpress 源代码上达到顶峰;我想知道他们如何管理自定义 url 功能,但我无法真正理解。
wordpress .htaccess 文件中的重写规则只是将所有请求重定向到 index.php。
在那之后,这对我来说是一个谜:他们是如何example.com/this/title/is/cool/
匹配的index.php?p=233 ?
一旦它被重定向到 index.php,该文件可以查看$_SERVER['REQUEST_URI']
以确定该this/title/is/cool
部分中的内容,然后从数据库中查找要提供的页面,因为 REQUEST_URI 列出了完整的 URI 字符串,即使实际页面 url被重定向到只是它的第一部分。
例如,
http://www.example.com/foo/bar/
被重写为
http://www.example.com/index.php/foo/bar/
这实际上会导致http://www.example.com/index.php被加载,但$_SERVER['REQUEST_URI']
其中会包含完整/index.php/foo/bar/
的内容。
一些应用程序使用不同的方法,它们.htaccess
只使用尾随的“目录”并将它们放入查询字符串中,这样重写就变成了这样:
http://www.example.com/index.php?path=/foo/bar/
在这种情况下,提供的路径在_GET['path']
.