1

我正在开发具有以下结构的基于模板的 CMS:

/public_html/admin/

^ 包含所有 CMS 文件和函数等。

/public_html/user_html/

^ 是客户端通过 FTP 访问并管理所有客户端文件(即 html、javascript、css、jpg、png 等)的目录,但不允许添加服务器端文件(即 php 等)的权限。

/public_html/index.php

^ 是驱动站点/应用程序本身的公共根目录,index.php 是该目录中唯一的文件,它处理 URI 请求并运行应用程序。

进一步了解系统和结构:它的设置使得其中的所有 html 文件都user_html充当系统某些模块的模板/布局 - 这些文件具有自定义标签以输出系统功能,并且服务器从中读取所有文件和文件夹user_html在请求时将它们输出到应用程序。

这一切都很好,而且很受欢迎。我在这里想要实现的是隐藏user_html所有 URL 浏览器请求。所以基本上html页面中的所有路径都必须像这样读取才能工作:

src="/user_html/js/scripts.js",
src="/user_html/css/styles.css"
src="/user_html/images/logo.png"

而用户/客户端在创建和编辑 html 页面时输入的所需路径如下:

src="/js/scripts.js"
src="/css/styles.css"
src="/images/logo.png"

客户端可以完全控制目录中的目录和文件user_html,因此所有文件路径都将永远改变。基本上,浏览器需要知道所有文件和这些文件所在的目录user_html,但要像它们所在的位置一样显示public_html

如果有人有一个简单的答案,使用 htaccess 路由所有 URI 请求,除了 .php 文件和/admin/目录到user_html,或任何其他想法和想法,将不胜感激。

我已经进行了广泛的搜索,但找不到我所追求的解决方案。但是我确信这将是一个非常简单的 RewriteCondition 和 RewriteRule。

4

1 回答 1

1

是的,这只是一些重写规则!

如果您可以接受“js/foo.js”形式的 URL,那么您只需要 public_html 中的 .htaccess 文件。

# everything that's not .php or in /admin goes to user_html.
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^(.+)\.php$
RewriteCond %{REQUEST_FILENAME} !^/admin(.+)$
RewriteRule ^(.+)$ /user_html/$1 [NC]
于 2012-12-10T01:01:03.907 回答