代码之家  ›  专栏  ›  技术社区  ›  josef.van.niekerk

如何在PHP Symfony中将不同的服务器名称映射到不同的目录索引?

  •  1
  • josef.van.niekerk  · 技术社区  · 15 年前

    Symfony使用以下典型的 .htaccess 文件:

    Options +FollowSymLinks +ExecCGI
    
    <IfModule mod_rewrite.c>
      RewriteEngine On
    
      RewriteRule ^$ index.html [QSA]
      RewriteRule ^([^.]+)$ $1.html [QSA]
      RewriteCond %{REQUEST_FILENAME} !-f
    
      RewriteRule ^(.*)$ index.php [QSA,L]
    </IfModule>
    

    我把这个作为我的vhost:

    <VirtualHost 127.0.0.1:80>
        ServerName jobeet.loc
        DocumentRoot "C:/wamp/www/jobeet/web"
        DirectoryIndex index.php
    <Directory "C:/wamp/www/jobeet/web">
        AllowOverride All
        Allow from All
    </Directory>
    
    Alias /sf "C:/wamp/lib/symfony-1.4.1/data/web/sf"
    <Directory "C:/wamp/lib/symfony-1.4.1/data/web/sf">
        AllowOverride All
        Allow from All
    </Directory>
    

    http://jobeet.dev 要自动为frontend_dev.php文件提供服务,以便我可以使用如下URL:
    http://jobeet.dev/jobs/ ...
    而不是
    http://jobeet.dev/frontend_dev.php/jobs/ ...

    我尝试添加vhost条目的副本,并简单地将servername和directoryindex更改为
    ServerName jobeet.dev

    但可以理解的是,这不起作用,因为我相信我需要检查.htaccess中的URL才能做到这一点?

    有人能就此提供一些建议吗?

    提前谢谢! :)

    2 回复  |  直到 15 年前
        1
  •  2
  •   nortron    15 年前

    首先将jobeet.dev作为服务器别名添加到当前VirtualHost中,以便它可以共享相同的主机配置:

    <VirtualHost 127.0.0.1:80>
        ServerName jobeet.loc
        ServerAlias jobeet.dev
        DocumentRoot "C:/wamp/www/jobeet/web"
        ....
    

    完成后不要忘记重新启动Apache。

    apps/frontend/config/settings.yml :

    dev:
      .settings:
        no_script_name: true
    

    最后,在生产控制器进入游戏之前,为您的开发域设置一个重写规则,将jobeet.dev中的所有内容路由到您的开发web控制器:

      RewriteEngine on
      ...
      ...
      RewriteCond %{HOST_NAME} ^jobeet\.dev$
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ frontend_dev.php [QSA,L]
    
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ index.php [QSA,L]
    

    应该这样做。

        2
  •  0
  •   Darmen Amanbay Cherma Ramalho    15 年前

    我建议您映射所有需要的主机( jobeet.loc , jobeet.dev SF_DIR/web 设置 index.php $_SERVER['HTTP_HOST'] .