我正在尝试为我的网站实现我自己的 cms 作为 php 实践,但我遇到了以下问题:
有一个上面描述的项目层次结构。 core文件夹中是主要的重要脚本,例如基本控制器、连接数据库等。develop文件夹中包含自定义控制器、视图、模型和模板。public文件夹中只有.htaccess、index.html。 php 从核心调用 bootstrap.php 和站点图标
给定所需的 url,我调用所需的控制器并连接:
- 网站标题
- 表现
- 网站页脚
但我真的很喜欢模板的想法,而且我喜欢 bitrix 模板结构,所以我想自己做这个。正如我上面所写,模板存储在 /develop/templates 中。站点根目录/public/
我根据 ChatGPT 和论坛人员的建议尝试了相对路径,但没有帮助
(../../develop/...)
尝试在htaccess中实现重定向
RewriteCond %{REQUEST_URI} ^/templates/admin/(.*)$
RewriteCond %{REQUEST_URI} !/develop/templates/(.*)$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/../templates/$1 [L,R=301]
但到目前为止没有任何帮助,而且我真的不喜欢在公共场合存储模板......
其实问题是:是否可以在不影响httpd配置文件的情况下,通过php和htaccess实现样式、脚本、图片的连接?到目前为止,我只看到了这个解决方案,但我想避免它,以便该网站易于移植。
PS我忘了写我也找到了解决方案
echo '<style>';
include <путь к стилю>
echo '</style>';
在创建模板时,这样的决定在多大程度上会是错误的?
将开发目录和核心目录移至公众是多么错误的事情,为什么?
当然,任何网络服务器都不会从上面的根目录向客户端提供任何内容。否则它就不是一个网络服务器,而是一个筛子。如果“论坛里的人”和ChatGPT试图提供解决方案,那只能说明他们的无能。
浏览器所需的所有资源- 那些相同的资源(样式、图像、脚本、字体等) -必须位于站点的根目录中。
作为解决方法,您可以创建指向网站根目录中的资产文件夹的符号链接。好吧,或者不要吹毛求疵,只需将资产放在根部即可。
但 PHP 解析的模板很可能位于网站的根目录之上。在模板中,到这些资源的链接应始终是来自站点根目录的绝对链接。也就是说,如果public文件夹中有/assets/admin文件夹,那么脚本的路径将为/assets/admin/js/script.js。如果根目录下只有 /js/ 文件夹,则将路径写为 /js/script.js
您可以通过 PHP 连接一切。您始终可以建立一个 PHP 脚本的链接,该脚本将从根目录上方的文件夹中读取所需的文件,生成合适的 HTTP 标头并将内容返回给客户端。但这就像用左脚挠右耳一样。更不用说这个脚本必须只返回严格定义的文件,而不是任何东西,这对于初学者来说是一个问题。
可以将样式文件和脚本的内容直接填充到 HTML 代码中,但这被认为是不好的形式。最好立即学会如何正常使用资产。