首先,我很抱歉在这个论坛中发布了类似的问题,这些问题已经有1000个或者更多类似的主题。不幸的是我还没有找到解决方案所以我认为值得在这里发布。
我的问题:
我们的Web服务器中安装了Zend Framework,所有非文件,非目录请求都被路由到index.php,如下所示:
应用
的httpdocs
index.php
我们的.htaccess文件(在我们的公共httpdocs文件夹中)包含以下代码:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
这完美无缺。但是,出于安全考虑,我知道要将index.php移动到另一个子文件夹,所以必须将所有内容发送到我的子文件夹/ index.php
的httpdocs
subfolder index.php
我们尝试了上述操作,它成功地处理了除主页之外的所有请求。它完成如下:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ subfolder/index.php [NC,L]
我的主页没有加载,它有无限的重定向问题。
有人可以帮助我解决这个问题吗?
我认为这是因为访问www.mydomain.com会导致Apache首先寻找“index.html”。找不到此文件时,它会查找“index.php”。以前,我的index.php在web根目录中 - 所以这一行有效:
RewriteRule ^.*$ - [NC,L]
但是现在,没有index.php - 它已经移动到子文件夹。所以这条线现在应该可以工作:
RewriteRule ^.*$ subfolder/index.php [NC,L]
然而,问题是该文件未加载。无限重定向告诉我htaccess保持重定向到自身并且实际上没有到达子文件夹/ index.php文件
任何人都可以建议我应该做些什么来使这项工作,或进一步测试?
此故障单的背景:安全专家建议我们最好“限制”哪些文件夹可以运行PHP。由于index.php在根目录中,我们宁愿将其移动到子文件夹,以便只有该子文件夹可以运行PHP,而不是root本身。这里有更多细节,但如果有人有任何建议/问题/意见,请大声呼喊。
非常感谢!