Php 如何";“移动”;文档是否向上一级到公共目录?
我复制了Zend的重写代码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
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?我可以从任何网站或教程中获取它吗?