通过app.conf修改BCH环境配置
app.conf配置文件
app.conf是BCH提供的部署配置文件,您通过配置app.conf可以实现主机环境的自定义。
注意:
- app.conf在网站文件主目录/webroot下。
- app.conf须严格遵照YAML语法规范,任何不合规范的配置,如使用中文、Tab或不符合缩进规则等,均会导致发布失败。
你可通过在app.conf文件中配置handlers规则来实现环境的高级配置:
- url/regex_url:设置路由规则(包括默认首页顺序),与script规则配合使用。
- UrlRewrite:对于不存在的路径,根据正则表达式进行重定向。
- errordoc: 自定义错误页面
- expire:设置过期时间
- mime: 设置某类扩展名对应的文件类型
- check_exist:检查文件或目录是否存在
- ipblacklist与ipwhitelist: 设置黑白名单
通过url/regex_url和rewrite_not_exist配合使用,能够实现绝大多数伪静态功能。
url/regex_url设置路由规则
url与regex_url
-
作用
设置路由规则,包括默认首页顺序。其中,url设定的正则表达式所匹配字符串是用户输入URL的子串(“/”作为特例,需精确匹配),与script规则配合使用;而regex_url设定的正则表达式须与用户输入URL完全匹配,可与script、status_code及location规则配合使用。
-
语法
handlers : - url : <Regex> script : <File_Path> - url : <Regex> static_files : <File_Path> - regex_url : <Regex> script : <File_Path> - regex_url : <Regex> status_code : {301 | 302 | 403 | 404} [location : <Redirection_Page>]
注意:
[location: <Redirection_Page>]仅能在status_code设为301或302时使用。
-
代码示例
# 设置默认首页顺序示例 hanlders : - url : / script : index.php - url : / script : index.html # url示例 handlers : - url : / script : home.php - url : /index\.html script : home.php - url : /(aaa)/(.*\.gif) static_files : static/$2 - url : /admin/.* script : admin.php # regex_url示例 - regex_url : ^/[a-z0-9]\.html$ script : /index.php - regex_url : ^/secure_page$ status_code : 403 - regex_url : ^/secure_page$ status_code : 302 location : http://example.com/error.html # 任何request都返回503示例 handlers : - url : /(.*) script : maintaince.php maintaince.php <?php header("HTTP/1.1 503 Service Unavailable"); ?> this service is down for maintaince, please contact admin.
伪静态UrlRewrite
rewrite_not_exist
-
作用
用户请求的
<Regex>
路径不存在的时候,根据<Regex>
进行正则匹配,然后替换为<New_File_Path>
。 -
语法
handlers : - rewrite_not_exist: <Regex> script : <New_File_Path>
-
代码示例
# example 1 handlers : - rewrite_not_exist: (.*) script : /index.php/$1
自定义错误页
errordoc
-
作用
自定义错误页面,设定Web服务器在处理用户请求发生错误时所返回的错误页面。
-
语法
handlers : - errordoc : <Error_Code> <Error_Response_Page>
注意:
<<Error_Code>为“0”时表示任意错误。
-
代码示例
handlers : - errordoc : 403 /error/403.html - errordoc : 404 /error/404.html - errordoc : 0 /error/default.html
设置过期时间
expire
-
作用
设置过期时间,指导浏览器对其进行缓存和失效操作。
-
语法
handlers : - expire : <File_Extension> {access | modify} <Number> {years | months | weeks | days | hours | minutes | seconds}
-
代码示例
handlers : - expire : .jpg modify 10 years - expire : .swf modify 10 years - expire : .png modify 10 years - expire : .gif modify 10 years - expire : .JPG modify 10 years - expire : .ico modify 10 years
MIME文件类型定义
mime
-
作用
设置某类扩展名对应的文件类型。
-
语法
handlers : - mime : <File_Extension> <Content_Type>
-
代码示例
handlers : - mime: .txt text/plain
检查文件和目录是否存在
check_exist
-
作用
检查文件和目录是否存在,并根据判断结果进行处理,可与script、status_code、location规则配合完成使用。
-
语法
handlers : # 格式一 - check_exist : {file_exist | dir_exist | not_exist} script : <File_Path> # 格式二 - check_exist : {file_exist | dir_exist | not_exist} status_code : {301 | 302 | 403 | 404} [location : <Redirection_Page>]
注意:
[location: <redirection_page>]仅能在status_code设为301或302时使用。
-
代码示例
# example 1 handlers : - check_exist : not_exist script : /index.php # example 2 handlers : - check_exist : not_exist status_code: 403 # example 3 handlers : - check_exist : not_exist status_code : 302 location : http://example.com/error.html
设置IP 黑名单/白名单
ipblacklist与ipwhitelist
-
作用
- 黑名单:设置禁止通过的用户,黑名单以外的用户均能通过。
- 白名单:设置能通过的用户,白名单以外的用户均不能通过。
-
语法
handlers : - ipblacklist : [<Regex_URL_Pattern>] <IP_Pattern> - ipwhitelist : [<Regex_URL_Pattern>] <IP_Pattern>
注意:
[<Regex_URL_Pattern>]
省略时表示所有URL地址。<IP_Pattern>
可以使用IP地址、IP地址/掩码、正则表达式,之间用逗号隔开。
-
代码示例
# 设置黑名单 handlers : - ipblacklist : 192.168.1.* - ipblacklist : 192.168.1.0/24 - ipblacklist : /critical\.html 192.168.0.* # 设置白名单 handlers : - ipwhitelist : 192.168.1.0/24 - ipwhitelist : 192.168.0.10,192.168.1.*,192.168.2.0/24
完整示例
该示例包含设置默认首页,404处理,URL Rewrite、重定向和过期处理。
handlers:
# 设置默认首页
- url : /
script : home.php
# URL Rewrite,所有的图片都访问其他地址
- regex_url: /picture/(.*\.gif)
static_files: static/$1
# URL Rewrite,所有的html访问都转换为php访问
-regex_url:^/([a-z0-9]*)\.html$
script: /process.php?$1
# 重定向访问处理
-regex_url:^/permission_page$
status_code: 302
location: http://example.com/error.html
# 处理404错误
- errordoc : 404 /error/404.html
- errordoc : 403 /error/permission.html
# 过期处理
- expire : .jpg modify 10 years
- expire : .swf modify 10 years
- expire : .png modify 10 years
- expire : .gif modify 10 years
- expire : .JPG modify 10 years
- expire : .ico modify 10 years
# mime 设置默认首页
- mime: .txt text/plain
- mime: .json application/json
通过app.conf实现伪静态示例
通过url/regex_url和rewrite_not_exist配合使用,能够实现绝大多数伪静态功能。本节将以Wordpress和discuz为例,给出典型的app.conf配置示例。
wordpress
如果wordpress设置为“朴素”方式,则app.conf不需要进行其他处理。如果为其他方式,则需要在app.conf中加入以下规则:
- rewrite_not_exist: (.*)
script: /index.php/$1
完整的app.conf文件内容如下:
handlers:
- url : /
script : /index.php
script : /index.html
- rewrite_not_exist: (.*)
script: /index.php/$1
- errordoc : 404 /error/404.html
- expire : .jpg modify 10 years
- expire : .swf modify 10 years
- expire : .png modify 10 years
- expire : .gif modify 10 years
- expire : .JPG modify 10 years
- expire : .ico modify 10 years
discuz
如果用户部署的是discuz,建议在app.conf中加入以下规则:
- regex_url: ^/topic-(.+)\.html$
script: /portal.php?mod=topic&topic=$1&%1
- regex_url: ^/article-([0-9]+)-([0-9]+)\.html$
script: /portal.php?mod=view&aid=$1&page=$2&%1
- regex_url: ^/forum-(\w+)-([0-9]+)\.html$
script: /forum.php?mod=forumdisplay&fid=$1&page=$2&%1
- regex_url: ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$
script: /forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
- regex_url: ^/group-([0-9]+)-([0-9]+)\.html$
script: /forum.php?mod=group&fid=$1&page=$2&%1
- regex_url: ^/space-(username|uid)-(.+)\.html$
script: /home.php?mod=space&$1=$2&%1
- regex_url: ^/blog-([0-9]+)-([0-9]+)\.html$
script: /home.php?mod=space&uid=$1&do=blog&id=$2&%1
- regex_url: ^/archiver/(fid|tid)-([0-9]+)\.html$
script: /archiver/index.php?action=$1&value=$2&%1
- regex_url: ^/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$
script: /plugin.php?id=$1:$2&%1
完整的app.conf内容如下:
handlers:
- url : /
script : /index.php
script : /index.html
- regex_url: ^/topic-(.+)\.html$
script: /portal.php?mod=topic&topic=$1&%1
- regex_url: ^/article-([0-9]+)-([0-9]+)\.html$
script: /portal.php?mod=view&aid=$1&page=$2&%1
- regex_url: ^/forum-(\w+)-([0-9]+)\.html$
script: /forum.php?mod=forumdisplay&fid=$1&page=$2&%1
- regex_url: ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$
script: /forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
- regex_url: ^/group-([0-9]+)-([0-9]+)\.html$
script: /forum.php?mod=group&fid=$1&page=$2&%1
- regex_url: ^/space-(username|uid)-(.+)\.html$
script: /home.php?mod=space&$1=$2&%1
- regex_url: ^/blog-([0-9]+)-([0-9]+)\.html$
script: /home.php?mod=space&uid=$1&do=blog&id=$2&%1
- regex_url: ^/archiver/(fid|tid)-([0-9]+)\.html$
script: /archiver/index.php?action=$1&value=$2&%1
- regex_url: ^/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$
script: /plugin.php?id=$1:$2&%1
- errordoc : 404 /error/404.html
- expire : .jpg modify 10 years
- expire : .swf modify 10 years
- expire : .png modify 10 years
- expire : .gif modify 10 years
- expire : .JPG modify 10 years
- expire : .ico modify 10 years