2009-04-28 137 views
2

我試圖移植由另一個編碼器開發的PHP站點(誰不在身邊),我遇到了Apache Rewrite規則的問題,它提示目標服務器上的文件下載。我確信這是一個簡單的問題,但我遇到了一些困難谷歌搜索答案。我正在一個(專用的)Ubuntu服務器上運行,標準安裝Apache和PHP5,並從共享共享服務器移植到一切正常。在該端口期間沒有任何站點文件被更改。Apache重寫規則強制下載

.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)文件,而不是顯示它,與消息

「你已選擇打開 [對話框示出了這裏的空白空間]

其是:應用程序/ X的httpd - PHP 從.... 」

我想我一定錯過了PHP或Apache的配置,但是什麼?

編輯:澄清,服務器運行Apache2,並有幾個,運作,PHP網站上。此外,如果我刪除.htaccess文件並運行一個簡單的phpinfo顯示頁面,那麼一切運行良好,所以它不是PHP的執行。

+0

這可能不是你問題的原因。但是如果你的模式中只有一個組,你可以只有一場比賽,因此只用1美元(除了整場比賽的$ 0)。而且你不需要在模式和替換部分中都不需要跳過`/`。 – Gumbo 2009-04-28 20:51:21

+0

哦,只是另一個想法:我希望有人不能獲得管理員權限,只需在該URL添加「admin = true」即可。 – Gumbo 2009-04-28 20:53:52

回答

3

我想,MIME類型application/x-httpd-php5無效。我已經在我的本地機器上試過了,它導致了相同的行爲。

您是否試過application/x-httpd-php

0

看起來像一個Apache配置問題,當然我可能是錯的。你檢查以下線的httpd.conf:

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

AddType text/html  php 
0

我有類似的問題。瀏覽器試圖從php網站下載鏈接,而不是加載它們。

這對我來說不是Php解釋器問題,原來是錯誤放置了.htaccess文件。但是,由於瀏覽器緩存的原因,我沒有意識到禁用htaccess文件幾個小時就解決了這個問題。

所以,別忘了清除你的瀏覽器緩存!並重新啓動Apache。