Apache重写规则强制下载

时间:2009-04-28 20:19:56

标签: php apache .htaccess

我正在尝试移植由另一个编码器开发的PHP站点(不再有人),我遇到了Apache Rewrite规则的问题,这些规则促使目标服务器上的文件下载。我确定这是一个简单的问题,但我在谷歌搜索答案时遇到了一些困难。我正在运行一个(专用的)Ubuntu服务器,它带有Apache和PHP5的标准安装,并从共享的共享服务器移植,一切运行正常。端口期间没有更改站点文件。

.htaccess文件包含此代码(仅限)

# Use PHP5 as default
AddHandler application/x-httpd-php5 .php
Options -Indexes FollowSymlinks


RewriteEngine on
RewriteRule ^html/(.*)     /index.php?init=site\/$1\/$2\/$3\/$4\/$5\/$6\/$7\/$8\/$9

RewriteRule ^mykart$         /index.php?admin=true
RewriteRule ^mykart/$       /index.php?admin=true
RewriteRule ^mykart/(.*)$   /index.php?init=admin\/$1\/$2\/$3\/$4\/$5\/$6\/$7\/$8\/$9&admin=true


当我尝试打开文件http://www.mysite.com/html/#home时,浏览器尝试下载(index.php)文件而不是显示它,并显示消息

“你选择了开放 [对话框显示空白]

这是一个:application / x-httpd-php  从.... “

我想我一定都错过了PHP或Apache配置,但是什么?

编辑:为了澄清,服务器正在运行Apache2并且有几个运行良好的PHP站点。此外,如果我删除.htaccess文件并运行一个简单的phpinfo显示页面,一切运行正常,所以不是每次看到PHP的执行。

3 个答案:

答案 0 :(得分:3)

我认为MIME类型application/x-httpd-php5无效。我在我的本地机器上尝试了它,它也导致了同样的行为。

您是否尝试过application/x-httpd-php

答案 1 :(得分:0)

看起来像Apache配置问题,当然我可能是错的。您是否检查过httpd.conf以获取以下行:

# Add index.php to your DirectoryIndex line:
DirectoryIndex index.html index.php

AddType text/html       php

答案 2 :(得分:0)

我有类似的问题。浏览器试图从php网站下载链接,而不是加载它们。

对我来说,这不是Php解释器问题,原来是错误的.htaccess文件。但是,由于浏览器缓存,我没有意识到禁用htaccess文件解决了几个小时的问题。

所以,不要忘记清除浏览器缓存!并重新启动Apache。