2015-03-19 22 views
2

當我想讓我的symfony網站上線時,如何從我的網址中刪除'web/app_dev.php /'?Symfony2 - 如何從我的網址中刪除'web/app_dev.php /'?

這是發展過程中的默認網址,

http://{localhost}/my-symfony-2/web/app_dev.php/hello/World 

所以,當我去住,我希望能夠用這個URL來訪問我的symfony的網站,

http://my-symfony-2.com/hello/World 

任何想法?

+0

[如何從Symfony2網址中刪除「web/app \ _dev.php」?](http://stackoverflow.com/questions/9669458/how-to-remove-web-app-dev-php -from-symfony2-urls) – 2015-03-19 13:11:43

+0

我碰到過那個,但它沒有接受答案。我怎麼知道這是正確的答案呢? – oasis 2015-03-19 13:13:07

+3

您是否**嘗試**提供的任何解決方案? – 2015-03-19 13:13:59

回答

3

要隱藏app.php您需要:

具有至少到您的網站的Web根目錄訪問
  1. 。通常在你的虛擬主機空間的控制面板上,你可以找到你可以上傳你的文件(或者如果你有訪問憑據,你可以安裝和使用免費的FTP客戶端,如Filezilla)。
  2. 檢查您是否已安裝mod_rewrite模塊並在Apache中啓用,在「apache2handler」--->「Loaded Modules」目錄下查看phpinfo()(您應該直接通過控制面板獲得該可能性)。

這些檢查,你必須經過:

注意:Symfony2中已經自帶存儲在默認web目錄的.htaccess文件,但如果你不知道你在做什麼,最好更換指令在「IfModule mod_rewrite.c」中進行組合,如下所示。

  1. 使用本機的Symfony2 .htaccess或創建一個新的文件與.htaccess延伸和複製/粘貼這些指令裏面隱藏在生產中(而不是在本地主機)app.php

    <IfModule mod_rewrite.c> 
        RewriteEngine On 
        RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
        RewriteRule ^app\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L] 
        RewriteRule .? - [L] 
        RewriteCond %{REQUEST_FILENAME} -f 
        RewriteRule ^(.*)$ app.php [QSA,L] 
        RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ 
        RewriteRule ^(.*) - [E=BASE:%1]  
        RewriteRule .? %{ENV:BASE}app.php [L] 
    </IfModule> 
    
    # and from the symfony's original 
    <IfModule !mod_rewrite.c> 
        <IfModule mod_alias.c> 
         # When mod_rewrite is not available, we instruct a temporary redirect of 
         # the start page to the front controller explicitly so that the website 
         # and the generated links can still be used. 
        RedirectMatch 302 ^/$ /app.php/ 
         # RedirectTemp cannot be used instead 
        </IfModule> 
    </IfModule> 
    

    要應用需要重新啓動Apache的修改(這通常也會在您的網絡空間的控制面板上進行)。

谷歌搜索了一下,你可以找到噸的例子和教程,但要開始學習看看這個簡單的.htaccess guide with many useful infos and examplesOfficial URL Rewriting Guide (Apache2.4)。如果您遇到一些問題,請更新您的帖子,添加所有相關信息,否則您可以在此處提出另一個問題。

+0

非常感謝您的答案! – oasis 2015-03-21 07:21:16

1

如果您有權訪問部署服務器,則可以從終端使用: php app/console cache:clear --env=prod並且這將清除prod緩存,您將能夠使用標準路由。

但如果你是在託管,你還沒有接觸到終端部署應用程序,需要找到app/cache/*app/logs/*,並刪除他們的內容和之後添加適當的權限(766 | 777)的文件夾。

+0

感謝您的答案。我無法在託管服務器上執行命令行。我不明白這一點 - 「需要找到應用程序/緩存/ *和應用程序/日誌/ *並刪除它們的內容,並在爲文件夾添加適當的權限(766 | 777)。」 – oasis 2015-03-19 13:18:56

+1

複製完所有代碼在服務器上,瀏覽到文件夾'app/cache /'和'app/logs'刪除文件夾中的所有內容,爲文件夾添加讀寫權限 – 2015-03-19 13:29:19