Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP Symfony中将不同的服务器名称映射到不同的目录索引?_Php_Apache_Symfony1 - Fatal编程技术网

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

如何在PHP Symfony中将不同的服务器名称映射到不同的目录索引?,php,apache,symfony1,Php,Apache,Symfony1,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.

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>
Options+FollowSymLinks+ExecCGI
重新启动发动机
重写规则^$index.html[QSA]
重写规则^([^.]+)$$1.html[QSA]
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$index.php[QSA,L]
我把这个作为我的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>

ServerName jobeet.loc
DocumentRoot“C:/wamp/www/jobeet/web”
DirectoryIndex.php
允许超越所有
通融
别名/sf“C:/wamp/lib/symfony-1.4.1/data/web/sf”
允许超越所有
通融

上面的工作非常完美,但我想知道如何映射和附加调试url,以便自动为frontend_dev.php文件提供服务,这样我就可以使用url,如:
..
而不是
映射到框架中的debug.php文件

我尝试添加vhost条目的副本,并简单地将servername和directoryindex更改为
ServerName jobeet.dev
DirectoryIndex前端\ u dev.php
但可以理解的是,这不起作用,因为我相信我需要检查.htaccess中的URL才能做到这一点

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

提前谢谢!
:)

我建议您将所有需要的主机(
jobeet.loc
jobeet.dev
等)映射到
SF_DIR/web
,将
index.php
设置为DIR index(如您所做),并在该文件中根据
$\u服务器['HTTP_HOST']
使用特定的环境运行特定的应用程序


希望我描述的很好,以便清楚地说明问题。

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

<VirtualHost 127.0.0.1:80>
    ServerName jobeet.loc
    ServerAlias jobeet.dev
    DocumentRoot "C:/wamp/www/jobeet/web"
    ....
现在,您的开发web控制器(frontend_dev.php)将不会显示在自动生成的url中(从link_到()、url_for()等等)

最后,在生产控制器进入游戏之前,为您的开发域设置一个重写规则,将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]
应该这样做

  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]