php - 在 Symfony2 中移除 web/app.php

标签 php apache .htaccess symfony mod-rewrite

我的服务器有以下目录结构

/srv
   /www
      /site.com
         /symfonysite
         /Other Drupal hosted site files

当我访问 site.com 时,我的 drupal 站点打开了,我希望能够访问 site.com/symfonysite 而不是 site.com/symfonysite/web/app.php

我在 /symfonysite 中创建了一个 .htaccess 文件,如下所示

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /billing/web
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L] 
</IfModule>

但这只会去掉 app.php 部分,即 site.com/symfonysite/web 打开我的 symfony 站点,site.com/symfonysite 给出 找不到“GET/symfonysite/” 错误的路径。

我做错了什么?

最佳答案

symfony 的美妙之处在于它是高度可配置的。 您可以通过以下简单的 4 个步骤实现您正在寻找的东西:

  1. 创建一个目录(比如项目)并将symfonysite 的所有内容放在那里。你可以把这个目录放在任何你喜欢的地方。为简单起见,我们将在您的 symfonysite 目录中创建目录。

  2. 将您的 symfonysite/web 的所有内容移动到 symfonysite

  3. 编辑app.php 和/或app_dev.php 修改如下两行:

    $loader = require_once __DIR__.'/../app/bootstrap.php.cache';
    require_once __DIR__.'/../app/AppKernel.php';

    $loader = require_once __DIR__.'/project/app/bootstrap.php.cache';
    require_once __DIR__.'/project/app/AppKernel.php';

  4. 编辑 composer.json 文件更新 "symfony-web-dir": "web" 的值并将其更改为

    "symfony-web-dir": "../",

您修改后的目录结构可能如下所示:

/srv
   /www
      /site.com
         /symfonysite
              /project
         /Other Drupal hosted site files

注意:出于安全原因,symfony 建议仅将 web 目录暴露给可访问的 web 路径。您可以将项目目录放在任何您喜欢的地方。只需要根据您的位置更新路径。 为了给这个设置更多的安全性,你可以在项目目录中放置一个 .htaccess 文件

.htaccess

Deny from all

尽情享受吧!

关于php - 在 Symfony2 中移除 web/app.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22365647/

相关文章:

java - log4j:WARN org.apache.log4j.ConsoleAppender 中没有这样的属性 [append]

apache - 从 HTTP 到 HTTPS 的代理传递失败,网关错误 "502"

php - AJAX 导致 404 错误?

apache - htaccess 重定向

javascript - 使用 PHP 检索上传的 Blob

php - 如何连续显示元素(即每行 5 个元素)

php - 如何使用可互换字母获取单词的所有可能变体?

java - 如何更改 Activemq 的默认端口号

apache - 使用 htaccess 重定向

javascript - 在哪里从 cordova 应用程序上传文件以免费访问文件?