2012-01-26 74 views
0

在我的網站www.sqcp.com在另一臺linux服務器上測試,所有工作都應該如此。但是,由於將它移動到godaddy,mod_rewrite沒有工作,因此沒有其他頁面可訪問。即使我在創建一個空白的目錄/文件夾時,它也會爲該頁面起作用(顯然不是修補程序)。我的.htaccess文件。mod_rewrites .htaccess不能與godaddy託管(linux)

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteRule ^index\.php$/[L,R=301] 

    RewriteRule (.*)/{2,}$ /$1/ [L,R=301] 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php 
    RewriteRule (.*)\.php$ /$1/ [L,R=301] 

    RewriteRule ^(.*)/(\d{4}\-\d{2}\-\d{2}\-[a-zA-Z0-9\-_]+)$ $1?s=$2 [L] 

    RewriteRule ^(.*/)?staff.php/([a-zA-Z0-9\-_]+) $1staff.php?s=$2 [L] 


    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule (.*)/$ $1.php [L] 

    RewriteCond %{REQUEST_FILENAME}/index.php !-f 
    RewriteRule (.*)/$ $1 [L] 
</IfModule> 
+1

刪除''包裝。如果它被禁用,你*想要*顯示相應的服務器錯誤。任何人都不可能在不知道實際目錄結構或意圖的情況下用一塊RewriteRules來幫助你。需要更多的解釋什麼是工作,什麼不是。您可能還需要懇求GoDaddy支持爲您啓用'RewriteLog',否則無法進行調試。 – mario

+0

我應該刪除整個頂部線?該目錄非常簡單,所有頁面都在.htaccess文件的根目錄中。主頁工作正常,也有空缺頁面的作品,因爲根目錄中有一個文件夾名爲空位(實際上並不包含頁面本身) – user1170864

+0

'godaddy support has been useless'?奇怪! =)無論如何,嘗試馬里奧的建議:刪除''**和**'<\IfModule>' –

回答

0

Godaddy的運行一個非常好的共享託管服務,解決了大量的市場部門 - 誰想要的活性位點(也就是與一些腳本),但沒有支付或具有專業知識的成本和複雜性的用戶管理他們自己的Linux VM。這不是GoDaddy問題。是你的。

因此,首先通過運行phpinfo腳本來了解所運行的環境,並確保它創建您使用的變量。據我可以看到你的例子:

規則1-3是301重定向,以強制執行一些請求命名約定。

  • 規則1重定向/index.php/
  • 規則2個崩塌尾隨多個/到單個/
  • 規則3次重寫GET請求*.php*.php/

規則4-6地圖公共的URI到內部的

  • 第4重寫/*/yyyy-mm-dd-word*?s=yyyy-mm-dd-word(注意沒有QSA)
  • 規則5似乎是試圖改寫/*/staff.php/word/*/staff.php?s=word但語法錯了這一點。
  • 規則6替換任何上重定向由.php尾隨/
  • 規則7條任何尾隨「/」除非URI是與的index.php一個目錄(I假設你假設DirectoryIndex index.php(這是爲的情況下GoDaddy的?)

這都是無可救藥的困惑。你是隱藏或露出.php擴展呢?因爲第3,5和6是不一致的。和規則5似乎爲

RewriteRule ^(.*?)/staff.php/([a-zA-Z0-9\-_]+) $1/staff.php?s=$2 [L] 
多個邏輯

回到繪圖板,找出你正在試圖用你的htaccess規則做什麼;您希望您的公共URI語法是什麼;你的腳本如何佈置;什麼重定向你想傳回給客戶端瀏覽器,你希望Apache作爲內部重寫處理,以及需要什麼額外的條件來防止循環和失火。確保這是有道理的,然後調試它們,一次構建一個規則文件,並使用測試請求輪流執行每條規則,以驗證其執行的操作。

+0

我希望我有能力重新從頭開始寫它,但我之所以在這裏問的原因是爲了幫助,因爲這只是我們使用的網絡開發公司給我們的,我只是一個沒有開發經驗的網絡工程師 – user1170864

+0

我不會使用「僅僅」的;只是一個不同的專業。決定將應用程序重新託管到GoDaddy的人應該已經意識到,這可能會對應用程序產生迴歸影響,並且在此需要應用程序支持。如果你開始改變你不明白的東西,你可以挖掘一個更深的洞:-( – TerryE

0

嘗試在htaccess文件的開頭添加以下內容。我有同樣的問題得到改寫工作在其他地方工作的GoDaddy:

Options -Multiviews 
+0

謝謝!這解決了我的問題。 – innerurge1