当前位置:  开发笔记 > 编程语言 > 正文

使用Symfony2的Apache中的RewriteRule不删除app.php

如何解决《使用Symfony2的Apache中的RewriteRule不删除app.php》经验,为你挑选了2个好方法。

我的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的服务器配置,因此我正在寻找替代解决方案这个问题.



1> Pat Zabawa..:

您必须在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/.



2> Elnur Abdurr..:

该重写规则并不意味着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


你是对的 - 因为`.htaccess`文件中的重写规则,无论如何都会使用'app.php`.我的`RedirectMatch`指令所做的不是让用户明确地转到`app.php`****.如果用户以某种方式进入"www.acme.com/app.php/home",她将被重定向到"www.acme.com/home" - 这就是它的全部内容.
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有