【问题标题】:WAMP Apache VirtualHost and Symfony2 issueWAMP Apache VirtualHost 和 Symfony2 问题
【发布时间】:2015-07-26 01:18:56
【问题描述】:

我在 Windows 7 上使用 WAMP。每次我尝试为 Symfony2 项目创建虚拟主机以使用“干净”的 URL 时,都会收到 404 错误。

这是我的 httpd.conf:

NameVirtualHost localhost

<VirtualHost localhost>     
    DocumentRoot "D:/Documents/wamp/"
    ServerName localhost    
</VirtualHost>

<VirtualHost my-project.local>
    ServerName my-project.local
    DocumentRoot "D:/Documents/wamp/my-project/web/"
    DirectoryIndex app.php
    <Directory "D:/Documents/wamp/my-project/web/">
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>

我的主机文件:

127.0.0.1       my-project.local

当我尝试联系http://my-project.local 时,我收到了 Symfony 404 错误。当我检查http://my-project.local/app.dev 时,我被重定向到http://my-project.local,所以我也收到一个404 错误,最后,当我尝试访问http://my-project.local/app_dev.php 时,加载了正确的页面,但绝对没有CSS。

我也尝试将 DirectoryIndex app.php 替换为 DirectoryIndex app_dev.php,但仍然得到 404。

例如,当我为其他由 Laravel 提供支持的项目创建虚拟主机时,我没有任何问题。

【问题讨论】:

  • 太棒了!我看过的每个教程都完全错过了&lt;IfModule&gt;...&lt;/IfModule&gt; 部分!谢谢!
  • 我想我应该添加一个答案,你接受它,这样其他人都可以从中受益。
  • 我必须说我从未见过&lt;VirtualHost my-project.local&gt;。该指令应该有一个类似&lt;VirtualHost *:80&gt; 的接口
  • @BentCoder 完成! @Broncha 使用 *:80 而不是我的虚拟主机名如何“更好”?

标签: apache symfony wamp virtualhost


【解决方案1】:

如果你检查你的web/.htaccess,你必须为 apache 启用 mod_rewrite,否则回退到 app.php / app_dev.php。因此,请检查此模块是否已加载到您的 wamp 中。

对于资产,您必须安装它们。在终端中:

cd D:/Documents/wamp/my-project/

php app/console assets:install

此命令必须将资产包硬拷贝到 web 目录中,尝试使用 --symlink 作为符号目录

【讨论】:

  • mod_rewrite 已经在 Apache 中启用,所以这不是我的问题的来源。另一方面,关于资产,你解决了我的问题:)
【解决方案2】:

示例虚拟主机 1)

阅读以获取更多信息:https://breinjhel.wordpress.com/2012/10/30/configuring-your-apache-web-server-vhost-for-symfony2-website/

<VirtualHost *:80>
    ServerName yourproject.com
    DocumentRoot "C:/xampp/htdocs/yourproject/web"
    DirectoryIndex app_dev.php
    <Directory "C:/xampp/htdocs/yourproject/web">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ /app_dev.php [QSA,L]
        </IfModule>
    </Directory>
</VirtualHost>

示例虚拟主机 2)

阅读以获取更多信息:Symfony 2 on virtual hosts

<VirtualHost *:80>
    ServerName www.domain.com.localhost
    ServerAlias domain.com.localhost
    ServerAdmin webmaster@localhost

    DocumentRoot /home/user/www/project/web
    <Directory /home/user/www/project/web/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ /app.php [QSA,L]
        </IfModule>
    </Directory>
</VirtualHost>

【讨论】:

    【解决方案3】:

    对于 Symfony 4:

    <VirtualHost *:80>
    ServerName mysite.com
    ServerAlias www.mysite.com  
    DocumentRoot "c:/wamp64/www/symfony4_mysite/public/index.php"
    <Directory  "c:/wamp64/www/symfony4_mysite/public/index.php">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
    </Directory>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-24
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 2014-02-22
      • 2018-12-15
      • 2022-06-23
      相关资源
      最近更新 更多