如何配置web服务器
概述
有不止一个方法配置web服务器访问symfony应用程序启用它。ob娱乐下载本章说明了不同的配置可能性和一些技巧来优化你的访问。
介绍
在上述例子中,myproject
项目包含一个myapp
应用程序。此应用程序的前端控制器index . php
和谎言在/home/steve/myproject/web/
。symfob娱乐下载ony数据目录data_dir美元
。
虚拟主机
虚拟主机允许您设置您的web服务器,以便symfony应用程序出现在一个域的根(或子域):ob娱乐下载
http://myapp.example.com/
让我们假设你运行一个Apache服务器。设置的一个虚拟主机myapp
应用程序中,添加以下行来httpd . conf
文件:
<目录“/ data_dir美元/ symfoob娱乐下载ny / web /科幻”> AllowOverride所有允许从< /目录> < VirtualHost *: 80 > ServerName myapp.example.com DocumentRoot“/ home / steve / myproject /网络”DirectoryIndex指数。php别名/科幻/ $ data_dir / syob娱乐下载mfony / web /科幻小说<目录“/ home / steve / myproject /网络”> AllowOverride所有允许从< /目录> < /虚拟主机>
的别名
声明在中间的图片是必要的调试栏显示。的data_dir美元
占位符,取而代之的是你的梨数据目录。例如,对于* nix,你应该类型:
别名/科幻/usr/local/lib/php/data/symfoob娱乐下载ny/web/sf
你会发现更多关于梨的目录中安装一章。
重新启动Apache,就是这样:webapp现在可以被称为通过一个标准的web浏览器并查看网址:
http://myapp.example.com/
或者,在调试模式下:
http://myapp.example.com/myapp_dev.php/
URL重写
默认情况下,web服务器配置为避免提及生产前端控制器(index . php
)的URL。这意味着,而不是显示:
http://myapp.example.com/index.php/
你的服务器显示和识别:
http://myapp.example.com/
这使用mod_rewrite
Apache模块,需要以下出现的行myproject / web / . htaccess
(这是默认情况下):
#所有的文件,都跳过RewriteCond % {REQUEST_URI} \ . .+ $ RewriteCond % {REQUEST_URI} ! \。html RewriteRule美元。* - [L] #其他人被重定向到前面web控制器RewriteRule ^(. *)美元指数。php (QSA L)
还有一个化妆品之外,您可能希望添加到url: a. html
在最后。通常情况下,当调用指数
行动的主要
模块,使用默认路由配置,显示的网址是:
http://myapp.example.com/main/index
默认的settings.yml
应用程序包含一个评论后缀
参数:
:# .settings: #后缀:。
为了使指数
行动的主要
模块出现:
http://myapp.example.com/main/index.html
你可以取消并设置后缀
参数. html
:
所有:.settings:后缀:. html
别名
如果你已经有一个网站域名,如果你希望symfony应用程序可以访问在这个领域,那么虚拟主机的解决方案是行不通的。ob娱乐下载例如,假设您想要访问我们的symfony应用程序:ob娱乐下载
http://www.example.com/myapp/
为此,打开httpd . conf
并添加以下行:
别名/ myapp /home/steve/myproject/web/ <目录“/ home / steve / myproject /网络”> AllowOverride所有允许从< /目录>
你还需要编辑. htaccess
文件位于您的myproject / web /
目录和改变过去的重写规则
RewriteRule ^(. *)美元指数。php (QSA L)
来
RewriteRule ^ (. *) / myapp /美元指数。php (QSA L)
重新启动Apache,尝试访问您的应用:
http://www.example.com/myapp/
多个应用程序在一个项目内
项目设计过程中,某一天你会遇到的多个应用程序访问的问题。例如,在我们的myproject
项目,您可能有一个myapp
公众和一个申请管理
应用程序o管理内容(通常称为后台)。如何授权访问多个应用程序在一个项目吗?
虚拟主机
您可以添加一个新的虚拟主机Apachehttpd . conf
这很容易理解:
<目录“/ data_dir美元/ symfoob娱乐下载ny / web /科幻”> AllowOverride所有允许从< /目录> < VirtualHost *: 80 > ServerName myapp.example.com DocumentRoot“/ home / steve / myproject /网络”DirectoryIndex指数。php别名/科幻/ $ data_dir / syob娱乐下载mfony / web /科幻小说<目录“/ home / steve / myproject /网络”> AllowOverride所有允许从< /目录> < /虚拟主机>ServerName admin.example.com DocumentRoot "/home/steve/myproject/web" DirectoryIndex admin.php Alias /sf /$data_dir/symfony/web/sf AllowOverride All Allow from All
别名
或者,您可以添加一个新的别名。这将允许你web内容(分开。css, js、图片等)为每个应用程序。这也可以避免直接修改httpd . conf
文件。
首先,创建一个新目录中网络
目录:
mkdir /home/steve/myproject/web/admin美元
然后,移动的前端控制器管理
应用到这个新目录,并复制. htaccess
有一个新应用程序:
cd /home/steve/myproject/web mv管理美元。php管理/索引。php mv admin_dev美元。php . htaccess admin / admin / $ cp
然后,执行上述步骤的最后两个步骤设置别名。编辑. htaccess
文件位于您的myproject / web / admin /
目录和改变
RewriteRule ^(. *)美元指数。php (QSA L)
来
RewriteRule ^ (. *) / admin /美元指数。php (QSA L)
最后,编辑前端控制器(myproject / web / admin / index . php
和myproject / web / admin / admin_dev.php
)和变化:
定义(“SF_ROOT_DIR”,realpath(目录名(__FILE__)。“/ . .”));
:
定义(“SF_ROOT_DIR”,realpath(目录名(__FILE__)。“/ . . / . .”));
这是足够的能够访问管理
应用程序:
http://whateveryourmainurlis/admin/
请注意
你需要在你重新创建相同的文件结构web /管理
目录的一个经典网络
目录(css
,js
,图片
,上传
根目录),因为所有的路径现在管理/
目录中。
IIS
ob娱乐下载Symfony兼容IIS。学习所有的安装和配置一个symfony项目在IIS环境中,阅读ob娱乐下载相关教程。
这个工作许可适用创作共用署名下衍生著作3.0 Unported许可执照。