Php 如何";“移动”;文档是否向上一级到公共目录?

Php 如何";“移动”;文档是否向上一级到公共目录?,php,.htaccess,mod-rewrite,zend-framework,Php,.htaccess,Mod Rewrite,Zend Framework,我复制了Zend的重写代码 RewriteEngine On RewriteRule ^\.htaccess$ - [F] RewriteCond %{REQUEST_URI} ="" RewriteRule ^.*$ /public/index.php [NC,L] RewriteCond %{REQUEST_URI} !^/public/.*$ RewriteRule ^(.*)$ /public/$1 RewriteCond %{REQUEST_FILENAME} -f Rewri

我复制了Zend的重写代码

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]
其思想是将文档根目录向上移动一级到公共目录,而无需触摸或修改虚拟主机文件

所以我在本地主机上的一个虚拟项目上测试了它,看看它是否在本地机器上工作但它不。我仍然需要单击公用文件夹才能查看web内容

这是我的目录

.htaccess
public/
   .htaccess
   index.php
index.php

<?php

// Show all information, defaults to INFO_ALL
phpinfo();
我必须使用这个url来查看网页

http://{localhost}/a-project/public/
而不是

http://{localhost}/a-project/
http://my-website.com/ 
在live server上也是一样的,我必须使用

http://my-website.com/public/
而不是

http://{localhost}/a-project/
http://my-website.com/ 

我认为根目录中的.htaccess可以将文档根目录向上移动一级到公共目录,而无需触摸或修改虚拟主机文件,但是它显然不能

文档根目录
中尝试此规则。htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule (.*) public/$1 [L]

您不应在
public\u html
目录中上载项目。您应该将项目上载到父目录,并将
public
目录重命名为
public\u html

在某些服务器中,文档根不是
public\u html
。它可能类似于
www
htdocs

这种分离是为了更安全,您强制用户仅使用
index.php
发送请求,而他们无法访问父目录并直接运行脚本


*您也可以使用
.htaccess
,但我不建议使用它

您可以显示
/public/.htaccess
的内容吗?另外,请澄清哪些URL不起作用?@anubhava请参阅我在上面的编辑。
这种分离是为了更安全
我完全同意这一点
您也可以使用.htaccess,但我不建议使用它
,因此如果使用
.htaccess
将文档根目录“移动”到公共目录中,是否不安全?我想在我的应用程序根目录中使用
.htaccess
,因为有些服务器没有
公共html
www
,或
htdocs
-如果您听说过一个.com,如果您将所有请求转发到公用文件夹,则您已保护您的网站免受多次攻击,但如果.htaccess配置不正确,则可能仍存在一些安全问题。例如,在某些情况下,攻击者可以找到站点结构(目录)并猜测您的框架。如果您知道如何配置secure htaccess,您可以这样做,但如果您没有足够的知识,最好更改您的主机。谢谢!这是有道理的。如何配置安全的htaccess?我可以从任何网站或教程中获取它吗?