2013-07-10 122 views
1

我在我的GoDaddy生產服務器上安裝了我的Symfony網站。當我使用網址www.amcolan.info/Symphony/web/app.php/index時,它工作正常。我希望它能夠將其設置爲www.amcolan.info/index。讓Symfony2在沒有app.php的情況下在GoDaddy上工作

我通過GoDaddy控制面板將域名更改爲指向文件夾amcolan/Symfony/web。它曾經指向/ amcolan,其中包含我的網站的工作版本。我在此之後成立,我安裝了以下.htaccess文件:

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 

    # Explicitly disable rewriting for front controllers 
    RewriteRule ^/app_dev.php - [L] 
    RewriteRule ^/app.php - [L] 

    # Fix the bundles folder 
    RewriteRule ^bundles/(.*)$ bundles/$1 [QSA,L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    # Change below before deploying to production 
    RewriteRule ^(.*)$ app.php [QSA,L] 
    #RewriteRule ^(.*)$ app_dev.php [QSA,L] 
</IfModule> 

我從這個網站的其他相關的問題得到了代碼和修改,以我的目的。原本打算住在Symfony目錄中。然後我清除了生產緩存並嘗試訪問一個頁面。它導致內部服務器錯誤。我的代碼中是否有錯誤?你可能會認爲Sensio會很好地記錄這一點,因爲我想99%的實現都需要這樣做。現在我越來越苦了。

至於建議,我試過用symfony來到下面的代碼:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    <IfModule mod_vhost_alias.c> 
     RewriteBase/
    </IfModule> 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ app.php [QSA,L] 
</IfModule> 

我也試過:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    #<IfModule mod_vhost_alias.c> 
     #RewriteBase/
    #</IfModule> 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ app.php [QSA,L] 
</IfModule> 

我得到了同樣的錯誤,與前兩者。爲了確保我進入目錄,我添加了一個index.php文件,並且可以訪問它。

更新2

亂翻一些更多GoDaddy的具體問題後,我發現在GoDaddy的論壇上稱RewriteEngine敘述已經在一個職位。我毫不影響地刪除了該代碼。然後我決定試試這個:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ http://www.amcolan.info/app.php/index [QSA,L] 

這讓它工作,雖然我懷疑不正確。我在app.php /之後首先嚐試了沒有索引的情況。這讓我陷入了symfony,但是卻產生了一個get錯誤。這似乎是因爲一個空參數,所以我添加了索引。因此,無論在www.amcolan.info之後有人可能輸入什麼,它都會進入索引。一旦你在Symfony頁面上,你可以導航到網站中的其他頁面。所以,現在我有三個新問題:

任何想法,當它讀取.htaccess文件時,Web服務器指向的位置?您可以在/ web目錄中考慮文件所在的位置。由於只是指定app.php而不是完整路徑不起作用,所以不一定如此。它會成爲我網站的基礎嗎?

成功重定向www.amcolan.info後,得到的顯示網址爲www.amcolan.info/app.php/index。我不想在URL中看到/app.php,但我懷疑這是不可能的,因爲它是實際的目的地。這是一個正確的假設嗎?

如何獲取www.amcolan.info/somepage以訪問www.amcolan.info/app.php/somepage而不是硬編碼索引?

更新3

我以爲我被卡住了,但後來我想:

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ app.php/index [QSA,L] 

這擺脫了必須使用完整的URL,現在的目標網頁不再顯示應用.PHP。我有一個新問題:只需指定www.amcolan.info導致上面提到的獲取錯誤。指定www.amcolan.info/spage不再將我帶到索引,而是到指定頁面。請繼續關注,我可以通過多一點挖掘來解決最後一個問題。

更新4

我加入固定的最後一個問題,下面我的路由文件:

我想我現在是一個快樂的人。

+0

文檔根目錄應指向'web'目錄和'web'目錄中提供的.htaccess應該做的工作做好。 –

+0

@Pazi,通過交付,你的意思是與Symfony下載的代碼? – curt

+0

是的,它帶有標準安裝。 –

回答

1

索引操作不是必需的。您也可以輕鬆配置根路由的任何操作。

這是我在GoDaddy上的完整的.htaccess文件,它終於有效。它只適用於prod config(app.php),app_dev.php不能很好地工作,但對我來說這樣可以,因爲它用於生產環境。

DirectoryIndex app.php 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ /app.php/ [QSA,L] 
</IfModule> 
相關問題