2014-12-22 42 views
0

我有一個symfony項目,我上傳到我的主機。這裏是我的文件夾順序:我想從url中刪除app.php,但是如何?

www 
-------vendor 
-------bin 
-------src 
-------app 
-------html 
--------------(my web content is inside html folder including .htaccess) 
--------------app.php 

當我在瀏覽器中輸入ip_address/app.php它帶來了我的主頁。但我想從所有請求網址中刪除app.php。請幫我做到這一點。

我搜索的解決方案,但因爲我不知道任何關於apache配置我無法解決我的問題。

請給我一個直接的解決方案或完整的代碼.htaccess

+0

'DirectoryIndex app.php',基本上是 –

+0

正如你所提到的,但沒有工作。我認爲Apache不使用.htaccess! –

回答

0

.htaccess文件複製到您的網站空間。有重寫到app.php。

# Rewrite all other queries to the front controller. 
RewriteRule .? %{ENV:BASE}/app.php [L] 
0

添加到您的htaccess文件的頂部:

RewriteEngine On 
RewriteCond %{THE_REQUEST} \ /+app\.php([^\?\ ]*) 
RewriteRule^/%1 [L,R] 

RewriteRule ^$ /app.php [L] 
+0

我對我的.htaccess有些疑惑。無論我是否將.htaccess放入我的html文件夾中,都無關緊要。即使我改變它,我也看不到我的網站行爲有任何變化。我應該做什麼比改變html文件夾的.htaccess更進一步嗎? –

0

所以基本上你想要的是,當你加載http://ip_address要在html/app.php內容得到加載。這可以用DirectoryIndex指令來完成。有關這方面的更多信息可以是found here

DirectoryIndex index.html index.php app.php 

以上配置將使apache的搜索index.html第一個文件,文件index.php第二和第三app.php。如果它發現任何這些文件,那麼它將被加載。

如果您希望針對不同的虛擬主機有不同的行爲,您可以使用<VirtualHost>部分添加此指令。

+0

我目前的directoryIndex是:DirectoryIndex app.php。但它不起作用 –

+0

你可以發佈'DocumentRoot'和'app.php'的絕對路徑。 –

+0

/var/www/html/app.php –

3

這裏是虛擬主機的爲symfony1.2在Apache中的最後一個版本的例子:

# /etc/apache2/sites-available/my-app.conf 

<VirtualHost *:80> 
    ServerName my-app.local.fr 
    DocumentRoot /home/me/Workspace/MySymfonyApp/web 

    <Directory /home/me/Workspace/MySymfonyApp/web> 
      Options Includes FollowSymlinks 
      AllowOverride none 
      Require all granted 
      RewriteEngine On 
      RewriteCond %{REQUEST_FILENAME} !-f 
      RewriteRule ^(.*)$ app.php [QSA,L] 
    </Directory> 

    ErrorLog ${APACHE_LOG_DIR}/my_app_error.log 
    # Possible values include: debug, info, notice, warn, error, crit, 
    # alert, emerg. 
    LogLevel warn 
    CustomLog ${APACHE_LOG_DIR}/my_app_access.log vhost_combined 
</VirtualHost> 

注意三線,是那些將「刪除」 app.php

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

要積極這個URL重寫你所有的虛擬主機,你必須執行以下命令:

$ sudo a2enmod rewrite 
$ sudo service apache2 restart 

最後,由於相關的安全問題,我不會推薦使用.htaccess

0

感謝所有在這裏的朋友。我通過在/etc/apach2/sites-available/000-default.conf文件中啓用覆蓋允許來解決了我的問題。