【问题标题】:PHP Fundamental Configuration of a CMSCMS 的 PHP 基本配置
【发布时间】:2017-09-19 04:12:16
【问题描述】:

我的问题非常基本:CMS 的基本思想是没有真正的内容文件,但在最简单的情况下,只有一个文件 index.php,

  1. 读取 URL,如 domain.com/fruit/pineapple(.php)domain.com?cat=fruit&sort=pineapple,
  2. 用来自数据源的菠萝内容填充自己,
  3. 随后将使用请求 URL 的别名发送回客户端。

关于 1) 服务器如何知道 index.php 负责每个请求?它只是htaccess吗? WordPress:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

这就是一切吗?每个不存在的文件都被解释为内容的现有文章?所以我必须在 index.php 里面检查一个被遗忘的图像 pineapple.png 是否被整理出来?

关于2)服务器如何将名称​​index.php改写成/fruit/pineapple(.php) ?cat=fruit&sort=菠萝 ?这不能是 301 重写,服务器必须将 index.php 重新绑定到请求的 URL。

【问题讨论】:

    标签: php .htaccess mod-rewrite content-management-system


    【解决方案1】:

    问题 1:是的,RewriteEngine 负责将每次调用路由到 index.php
    编辑:实际上,不是每个调用,带有!-f !-d 的行测试调用是否引用现有资源。如果它们不存在,它只会路由到 index.php。这允许服务器在没有 index.php 帮助的情况下发送现有文件(例如图像和其他包含的文件,例如 js 和 css 文件)。
    所以,如果我请求domain.com/fruit/pineapple.jpg,并且该图像存在,我会得到它。如果它不存在,则调用 index.php,它可能会生成一个漂亮的 404 页面

    问题 2:不,这不是由 APACHE 处理的,而是由 index.php 自己处理的,通过检查 $ _SERVER['REQUEST_URI'],并根据一组预定义的路由计算其内容。 这称为 URL 路由。每个 CMS 都有自己的方法,还有一些 PHP 库(或您喜欢的任何其他服务器端语言)。

    你可以看一下关于How to Implement URL Routing in PHP的更长解释

    【讨论】:

    • 谢谢!我永远不会想到这种方法:)
    • 如果我回答了您的问题,您可以考虑选择它作为您问题的答案,以便其他有同样疑问的人找到它。
    • 对不起,我还不能投票。与此同时,我已经完成了我的处理程序脚本,它运行良好。一个巨大的优势是我可以用 PHP 比使用 htaccess 文件更好地控制很多事情。想到错误页面。标题部分有点棘手。主目录看起来很干净:)
    猜你喜欢
    • 2011-12-02
    • 1970-01-01
    • 2017-10-31
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多