我正在尝试让一个 Web 应用程序在我的服务器上运行。该应用程序正在使用 uploadify,这是我现在唯一无法运行的部分。
我有一个别名可以访问该应用程序:(在 /etc/apache2/conf.d/appalias 中)
Alias /showGreatApp /home/user/greatapp
<Directory /home/user/greatapp>
AllowOverride All
AuthType Basic
AuthName "Welcome to Great App"
Require valid-user
AuthUserFile /etc/apache2/appuser-htpasswd
</Directory>
文件夹 /home/user/greatapp 中的 webapp 结构:
.htaccess (see content below)
app
application
assets (includes uploadify : assets/js/uploadify)
index.php (configured to use application-folder "./app/application")
uploads
.htaccess (see content below)
第一个 htaccess 文件 (/home/user/greatapp/.htaccess) :
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /showGreatApp/
# - (1) First try only these Three lines, not the other blocks (mod_security and mod_php5).
# - With this setup everytihing in the app works except the fileupload (uploadify).
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
# - (3) From example.
# - but with the different app-structure I have no idea hov to apply it to my case.
RewriteCond %(index\.php|(.*)\.swf|uploads|app|robots\.txt)
RewriteRule ^(.*)$ index.php [L]
</IfModule>
# - (2) Added this to setup (1).
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
# - Later tests, did not seem to make any difference.
<Ifmodule mod_php5.c>
SecFilterEngine "off"
SecFilterScanPOST "off"
</Ifmodule>
使用第一个设置(1)运行应用程序后,尝试上传文件时浏览器中出现“HTTP 错误”,并且在服务器日志中我收到:
192.168.1.196 - - [15/Jan/2014:21:10:08+0100] "POST /showGreatApp/ajax/project/issue_upload_attachment HTTP/1.1" 401 788 "-" "Shockwave Flash"
HTTP 状态代码 401 - 未授权。因此,我尝试使用代码 (2) 来补充设置 (1)。
我还将 htaccess 文件添加到文件夹 /home/user/greatapp/uploads/.htaccess:
AuthType None
Require all granted
Satisfy Any
然后我在浏览器中收到 IO 错误而不是 HTTP 错误,但服务器日志仍然显示代码 401。
然后我尝试了一些不同的设置(3 种不同的形式),受到以下页面的启发:http://ellislab.com/forums/viewthread/109751/
但由于应用程序结构存在差异,我只能盲目操作,因此我并不真正理解 Apache 重写语法。即使在以下人员的帮助下,我也不懂:http://httpd.apache.org/docs/current/rewrite/remapping.html
我能得到一些帮助吗?
答案1
使用 BASIC 身份验证的 Uploadify 要求使用 POST 发送身份验证凭据。以下是示例:
https://foo:[电子邮件保护]/showGreatApp/ajax/项目/issue_upload_attachment
请注意这并不安全:
用户名和密码以 Base64 编码的纯文本形式通过网络发送,而不是加密。因此,如果您要利用基本身份验证,则使用 SSL 来保护通信非常重要。
如果您拥有最新版本的 Apache,AuthBasicFake 是更好的选择:
<Location /showGreatApp/ajax/project/issue_upload_attachment>
AuthBasicFake demo demopass
</Location>
此外,将其添加到您的.htaccess
order allow,deny
deny from all
Options All -Indexes
参考