自定义.htaccess中的index.php路径 - 用于路由到Zend Framework

时间:2014-01-21 07:09:26

标签: .htaccess zend-framework

首先,我很抱歉在这个论坛中发布了类似的问题,这些问题已经有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本身。这里有更多细节,但如果有人有任何建议/问题/意见,请大声呼喊。

非常感谢!

0 个答案:

没有答案