有没有办法在 Symfony 应用程序中从 url 中删除 '/web' 而无需将 'web' 目录的内容移动到根目录?

Is there a way to remove '/web' from url in Symfony application without moving content of 'web' directory to root?

我在使用 Symfony 创建应用程序时遇到问题,即 url 中出现“/web”。我找到了一种通过将 'web' 目录的内容移动到根目录来摆脱这种情况的方法。但我认为这不是一个好的开发实践,必须有其他方法。谁能告诉我是否有其他方法可以做到这一点,就像我们使用 htaccess 从 url 中删除 app_dev.php 所做的那样?

不要从 Symfony 移动 /web 文件夹。您只需将您的虚拟主机或 Apache 默认根目录指向您的 Web 目录。例如:

您可以在 httpd.conf 中更改:

# ...
DocumentRoot "your_symfony_folder/web"
<Directory "your_symfony_folder/web">
# ...

如果您无法编辑 http.conf 且 mod_rewrite 已启用,只需将 .htaccess 文件放入您的文档根目录并将每个请求重定向到 /web 文件夹。

RewriteEngine on
RewriteRule ^(.*)$ /web/ [L,QSA]

在我的例子中,我正在使用 wamp 服务器并摆脱“/web”,您需要在 httpd-vhosts.conf 中配置虚拟主机,如下所示:

<VirtualHost *:80>
    DocumentRoot C:\wamp\www\YourProjectFolder\web
    ServerName projectName.local
</VirtualHost>

我认为你应该在你的主机服务器上做同样的事情。

您可以在项目根文件夹中创建一个 .htaccess(app、bin、src 等文件夹在哪里...):

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

我觉得你们都在流汗。

如果我错了请纠正我,但我通过简单地将 web 目录中的所有内容放入根目录中来设法将其删除。 然后我去掉了app_dev.php,把app.php重命名为index.php.