我有一个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
的完整代码。
答案 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文件中启用覆盖允许来解决我的问题。