【问题标题】:access files outside public_html folder访问 public_html 文件夹外的文件
【发布时间】:2013-08-21 04:22:03
【问题描述】:

我想从根目录 (public_html) 中创建一些文件夹。 我与关注目录共享服务器linux

  • /home/mysite
    • 访问日志
    • 邮件
    • public_ftp
    • public_html
    • tmp
    • www

以及我电脑中的站点目录(wamp):

  • 应用程序
    • 型号
    • 控制器
    • 查看
  • 配置
  • 公开
    • 图片
    • css
    • js
    • index.php
  • htaccess

我希望将公用文件夹放入服务器的public_html 文件夹中。 1)如何使用相对路径包含我的代码?

我有 htaccess 文件,该文件将所有请求指向我计算机中的 public/index.php

2)我应该将我的htaccess 放在我的共享服务器linux 的什么位置?

我的htaccess 文件:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

【问题讨论】:

  • .htaccess 的作用类似于 <Directory> 指令。将 .htaccess 文件放在您希望发生覆盖的目录中。
  • Marc B:谢谢您的回复。

标签: php .htaccess host


【解决方案1】:
  1. 您需要将所有公共文件放在 public_html 中。
  2. 将 .htaccess 移动到公共 html(该示例不重定向到公共/html 仅重定向到 index.php 并且很好)
  3. 如果有绝对路径示例“../public”更改为“../public_html”,如果是相对路径就可以了
  4. 将所有其他非公共代码移至根文件夹。

此时您的应用程序必须正在运行。

【讨论】:

  • 感谢您的回复。
【解决方案2】:

把所有东西都放进去

/home/我的网站

并配置您的虚拟主机以使用

/home/mysite/public/

作为 DocumentRoot。 将 .htaccess 放入

/home/mysite/public/

【讨论】:

  • 我把public文件夹的内容放到public_html文件夹中,对吗?
  • 感谢您的回复。
  • 如果你把它放在“public”文件夹中,你必须重新配置你的VirtualHost,这比重新配置所有东西来使用“public_html”而不是“public”要容易。
【解决方案3】:

您不能使用相对路径或在 htaccess 文件中重写来遍历文档根目录。您可以包含来自您的 php 脚本 (index.php) 的文件。所以你可以做的是允许将public_html之外的东西的请求路由到index.php,然后在php中,加载public_html之外的文件。

【讨论】:

  • 感谢您的回复。
猜你喜欢
  • 2013-01-18
  • 2016-04-30
  • 2015-01-01
  • 1970-01-01
  • 2014-06-04
  • 2016-10-04
  • 2012-03-28
  • 1970-01-01
  • 2015-07-01
相关资源
最近更新 更多