如何在Zend Framework项目中配置.htaccess以仅在公用文件夹中允许index.php

时间:2012-05-23 08:35:54

标签: php apache zend-framework .htaccess

我正在恢复一个网站,允许通过管理面板上传只允许公共文件夹中的index.php脚本。困扰我的是我使用ckeditor + pgrfilemanager,它们位于公共文件夹中并包含所需的php文件。

根据SO中知识渊博的人的建议,我发送了一个对此.htaccess片段的引用:

RewiteEngine On
RewriteCond %{REQUEST_METHOD} ^PUT$ [OR]
RewriteCond %{REQUEST_METHOD} ^MOVE$
RewriteRule ^/public/(.*)\.php /public/$1.nophp

我的问题是这将如何影响公共子文件夹中的php文件?

另一个问题是我真的不确定你的ZF项目的最终.htaccess你看起来是什么样的。目前正在阅读.htaccess手册,因为我并不熟悉它所以不确定我的更改

这是我想提出的内容

SetEnv APPLICATION_ENV production
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
RewriteCond %{REQUEST_METHOD} ^PUT$ [OR]
RewriteCond %{REQUEST_METHOD} ^MOVE$
RewriteRule ^/public/(.*)\.php /public/$1.nophp
AddHandler cgi-script .html .htm .shtml .php .php3 .phtml .phtm .pl .py .cgi .js .sh .jsp .asp
Options -ExecCGI

如果我能向有经验的人学习,我会很高兴。 谢谢

1 个答案:

答案 0 :(得分:1)

如果public中有真正的子文件夹,则根.htaccess文件不会影响其中的文件。 Apache找到最低的文件夹并查找指令。

.htaccess文件中的不同组件看起来不错,但它们不正常。这样的事情会更好:

SetEnv APPLICATION_ENV production
AddHandler cgi-script .html .htm .shtml .php .php3 .phtml .phtm .pl .py .cgi .js .sh .jsp .asp
Options -ExecCGI

RewriteEngine On

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

RewriteCond %{REQUEST_METHOD} ^PUT$ [OR]
RewriteCond %{REQUEST_METHOD} ^MOVE$
RewriteRule ^/public/(.*)\.php /public/$1.nophp [L]

RewriteRule ^.*$ index.php [NC,L]