我想从url中删除app.php,但是怎么样?

时间:2014-12-22 21:21:06

标签: apache .htaccess symfony

我有一个symfony项目,我把它上传到我的主机。这是我的文件夹顺序:

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的完整代码。

5 个答案:

答案 0 :(得分:3)

以下是Apache最新版本中Symfony的vhost示例:

# /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]

要为所有vhost激活此URL重写,您必须执行以下命令:

$ sudo a2enmod rewrite
$ sudo service apache2 restart

最后,由于相关的安全问题,我不建议使用.htaccess

答案 1 :(得分:0)

.htaccess文件复制到您的网站空间。有重写到app.php。

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

答案 2 :(得分:0)

将其添加到htaccess文件的顶部:

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

RewriteRule ^$ /app.php [L]

答案 3 :(得分: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>部分添加此指令。

答案 4 :(得分:0)

感谢我在这里的所有朋友。我通过在/etc/apach2/sites-available/000-default.conf文件中启用覆盖允许来解决我的问题。