1

请放轻松,因为这对我来说是一个全新的世界。

所以我已经构建了 Little cms 并使用 GET 来控制 url 中的 pageID 或页面永久链接。当只通过查询字符串传递 1 个变量时,我的脚本工作正常

例如我的 htaccess:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)$ index.php?p=$1
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?p=$1

然后我可以通过在我的索引文件中控制的 id 或永久链接来调用我的页面。我没有弄清楚的一件事是如何在调用子页面时在 url 中包含父永久链接。

另一个例子。如果我调用作为父级子级的页面:

http://site.com/index.php?p=post-title

如果 post-title 是 parent-title 的孩子;如何使用网址

http://site.com/parent-title/post-title?
4

1 回答 1

0

首先,我们可以将所有代码放在 Apache .htaccess 文件中。这可能看起来像这样:

  Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^users/(\d+)*$ ./profile.php?id=$1
RewriteRule ^threads/(\d+)*$ ./thread.php?id=$1
RewriteRule ^search/(.*)$ ./search.php?query=$1

让我们从顶部开始,一路向下,以更好地了解这里发生了什么。第一行使用 Options 指令将环境设置为遵循符号链接。这可能是必要的,也可能不是必要的,但一些网络主机使用符号链接(类似于 MacOSX 中的别名或快捷方式是 Windows)来处理常见的 HTTP 请求错误,这些通常是符号链接文件,或者至少这是我理解的推理方式。接下来我们告诉 Apache 我们将使用重写引擎。接下来的两行非常非常重要,它将 URL 的重写限制在实际不存在的路径上。例如,这会阻止以下规则匹配 example.com/images/logo.png。第一个使用 !-d 标志防止现有目录,第二个使用 !-f 表示忽略现有文件。接下来的三行是实际的 URL 重写命令。

于 2013-01-30T23:48:25.293 回答