php/symfony2 从 URL 中隐藏 app.php

标签 php apache symfony url-rewriting

考虑以下 URL:http://www.myurl.fr/accueil .

这是行不通的。然而http://www.myrurl.fr/app.php/accueil确实有效。

我摆脱了 .htaccess 文件,因为我想使用 vhost 文件并依赖 Apache 路由。我的虚拟主机文件如下:

<VirtualHost my.ip.address>
ServerName myurl.fr
ServerAlias www.myurl.fr
DocumentRoot /var/www/mysite/web
DirectoryIndex app.php
<Directory "/var/www/mysite/web">
  AllowOverride All
  Allow from All
</Directory>

<IfModule mod_rewrite.c>
 RewriteEngine On  
 RewriteCond %{ENV:REDIRECT_STATUS} ^$  
 RewriteRule ^app\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L]
 RewriteRule .? - [L]
 RewriteCond %{REQUEST_FILENAME} -f
 RewriteRule ^(.*)$ app.php [QSA,L]
 RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
 RewriteRule ^(.*) - [E=BASE:%1]    
 RewriteRule .? %{ENV:BASE}app.php [L]
</IfModule>
</VirtualHost>

我已经多次清除 Apache 缓存并重新启动它。 urlrewrite 模块已启用。我只是不知道还要检查什么。知道我错过了什么吗?

编辑 可能是因为我正在处理这两个 URL 在给定时间都不起作用。我的问题仍然有效。

最佳答案

将您的规则与 symfony 标准进行比较 .htaccess ,我看到您在“通过所有规则”之前错过了文件检查。尝试

<IfModule mod_rewrite.c>
    RewriteEngine On  

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
    # If the requested filename exists, simply serve it.
    # We only want to let Apache serve files and not directories.
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

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

关于php/symfony2 从 URL 中隐藏 app.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18281488/

相关文章:

javascript - 如何使用ajax方法交叉检查数据库中是否存在数据?

php - 使用斜杠转义然后使用 stripslashes PHP

java - 从 AWS 下载图像会导致文件损坏

php - 向用户显示 Symfony 应用程序版本的最佳实践?

php - 如何通过mysql查询获取不同时区事件的剩余天数,小时,分钟,秒数

php - 我可以使用 apache 的 mod_gzip 模块压缩 Web 服务请求和响应吗?

php - 使用 ini_set ("memory_limit", "-1")并且仍然内存不足

apache - 如何显示单个页面的 503 错误

php - Symfony2 : Redirecting to last route and flash a message?

Symfony 2 以表单形式获取用户区域设置