我的web目录中有以下.htaccess文件用于我的Symfony2安装:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*) app.php [QSA,L]
但是,当我尝试一些基本的东西,比如:
(whatever)/web/app.php/place
它不会从URL中删除app.php.我是Apache的新手,我不确定这里发生了什么,有人可以解释一下吗?提前致谢!
编辑:由于我正在使用的Web应用程序的结构我无法移动web文件夹之外的app.php或app_dev.php,也无论如何我也无法修改Apache的服务器配置,因此我正在寻找替代解决方案这个问题.
您必须在Apache中启用重写模块,如"IfModule mod_rewrite.c"所述.
为此:
运行命令行命令"a2enmod rewrite".
将所有"AllowOverride None"行更改为"AllowOverride All".
见http://www.lavluda.com/2007/07/15/how-to-enable-mod_rewrite-in-apache22-debian/.
该重写规则并不意味着app.php
从URL中删除.如果请求URL与真实文件不对应,它的目的是app.php
用于每个请求.由于它是一个真实的文件,它将用于提供请求.app.php
如果你想摆脱web/app.php
部分,首先创建一个指向该web
文件夹的虚拟主机:
ServerName whatever DocumentRoot /path/to/project/web
这将删除该web
部分.
然后,要删除该app.php
部分,请将其添加到web/.htaccess
文件的开头:
RedirectMatch permanent ^/app\.php/(.*) /$1