`

httpd的url匹配

阅读更多
官方reference:http://httpd.apache.org/docs/2.4/en/urlmapping.html

httpd主要是一个静态文件服务器。当然不限于此,通过各种mod,httpd也可以作为一个前端服务器,把请求转发到servlet container、cgi等。不过主要还是静态文件服务器,所以官方的reference也是从处理静态文件说起

1. DocumentRoot

首先要把浏览器里的url,映射到server的文件系统上

这是通过DocumentRoot directive配置的(httpd的各种配置,都是用directive完成的,各种mod提供了不同的directive)
DocumentRoot "/usr/local/httpd/htdocs"

这里把url的"/",映射到了/usr/local/httpd/htdocs目录下,比如:

http://localhost/abc,会映射到/usr/local/httpd/htdocs/abc这个文件

http://localhost/web/,会映射到/usr/local/httpd/htdocs/web/这个文件夹下(区别在于结尾的"/")

2. DirectoryIndex

另外有一个directive叫做DirectoryIndex,是用来自动处理文件夹的
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

这样配置之后,如果url请求访问一个目录,则httpd会先到这个目录下寻找index.html,找到则返回;如果没有找到,则显示目录列表

这也是为什么,访问http://localhost,会显示success page





3. 文件和文件夹

这里有一个问题,http://localhost/servlet,httpd怎么知道请求的是servlet文件,还是servlet目录呢?

一般来说,如果结尾有"/",就认为请求的是目录;否则认为是文件。但是httpd做了一些透明处理,可能会造成误导

http://localhost/servlet/,这种情况比较简单。如果在DocumentRoot下存在servlet目录,则匹配成功;找不到则直接返回404

http://localhost/servlet,稍微有点不一样:
如果在DocumentRoot下存在文件,则返回;
如果没有文件,但是有servlet文件夹,则会透明地当作文件夹处理;
如果都没有,才会返回404

4. 映射到其他文件夹

也可以通过Alias和AliasMatch,配置特定的URL不在DocumentRoot下,而是到别的地方查找。不过实践发现会返回403,不知道是为什么,网上也有很多人碰到这个问题。有空再研究下,今天先跳过了
  • 大小: 11.3 KB
  • 大小: 6.2 KB
分享到:
评论

相关推荐

    iis+httpd.ini实现伪静态

    在httpd.ini文件中,我们可以定义一系列规则来实现动态URL到静态URL的转换。例如: ```ini RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^news/([0-9]+)/(.*)$ /news.php?id=$1&title=$2 [L]...

    IIS伪静态rewrite组件及httpd.ini配置文件

    2. `&lt;rule&gt;` 元素:定义一个具体的URL重写规则,可以包括`name`(规则名称)、`pattern`(匹配的URL模式,通常使用正则表达式)、`stopProcessing`(是否停止后续规则处理)等属性。 3. `&lt;match url="..."&gt;`:定义要...

    httpd-2.2.23.zip

    - **模块化设计**:Apache的核心功能是模块化的,可以通过启用或禁用模块来增加或减少功能,如mod_rewrite用于URL重写,mod_ssl用于HTTPS支持。 - **安全性**:Apache支持各种安全措施,包括SSL/TLS加密、基本认证...

    apache2.4.33httpd安装包及依赖包

    4. **PCRE (Perl Compatible Regular Expressions)**: PCRE库实现了Perl语言风格的正则表达式,被广泛用于字符串处理和模式匹配。在Apache中,PCRE用于URL重写规则和访问控制等功能,使服务器能够根据复杂的规则进行...

    httpd.conf修改

    为了实现 URL 重写(如开启伪静态),需要加载 `mod_rewrite` 模块: ```apache LoadModule rewrite_module modules/mod_rewrite.so ``` **修改建议**: 如果该行已经被注释掉,则取消注释;如果没有该行,则添加...

    iis urlrewrite文件

    匹配模式通常使用正则表达式来定义需要重写的URL模式,条件可以进一步限定规则的触发情况,而动作则定义了URL应如何被重写。 2. 标准模板:IIS URL Rewrite提供了多种预定义的规则模板,如“隐式通配符”、“显式...

    Apache httpd-2.4.16-x86.zip

    3. **访问控制**:Apache 2.4提供了更灵活的授权和认证机制,如支持更复杂的正则表达式和更强大的路径匹配规则,使得Web服务器的权限配置更加精确。 4. **动态配置**:在2.4版本中,Apache支持运行时修改配置,无需...

    apr apr-util httpd pcre

    HTTPD通过PCRE实现灵活的URL匹配规则,以处理不同类型的请求。 构建Apache HTTP Server的过程通常包括以下步骤: 1. 解压所有下载的文件。 2. 配置编译环境,通常需要安装一些依赖库,如开发工具链(gcc、make等)...

    mod_jk的支持httpd2.4的win64版本

    4. **设置URL映射**:在`httpd.conf`或单独的`.conf`文件中,使用`JkMount`和`JkUnMount`指令来指定哪些URL请求应该被转发到哪个worker处理。 5. **重启Apache**:完成配置后,重启Apache服务器以使改动生效。 **...

    伪静态,利用urlrewritel重写url例子

    在`httpd.conf`或`.htaccess`配置文件中找到以下行并取消注释: ```apache LoadModule rewrite_module modules/mod_rewrite.so ``` 然后,为了在站点级别应用`URL Rewrite`规则,我们需要在`.htaccess`文件中编写...

    IIS URL重写ISAPI筛选器

    正则表达式是一种强大的文本处理工具,能够帮助我们精确匹配和替换字符串,从而实现复杂的URL重写逻辑。通过ISAPI筛选器,IIS能够拦截HTTP请求,根据预定义的规则进行URL变换,然后再将处理后的请求传递给应用程序。...

    OpenBSD httpd pattern check:检查您的模式以在 httpd 中进行位置匹配-开源

    在 OpenBSD 的 HTTP 服务器软件 httpd 中,模式检查是一项重要的功能,用于确保配置文件中的规则能够正确地匹配请求URL,从而实现安全、高效的Web服务管理。本文将深入探讨 OpenBSD httpd 模式检查及其在配置过程中...

    Apache URL Rewrite功能配置

    ### Apache URL Rewrite功能配置知识点详解 #### 一、Apache URL Rewrite简介 Apache URL Rewrite功能是Apache Web服务器的一个强大工具,它允许用户通过一系列规则来改变客户端请求的URL,从而实现URL重写、...

    urlrewrite简单例子

    实现这个功能,你需要在Apache服务器的配置文件(如httpd.conf或.htaccess)中添加urlrewrite的规则。以下是一个简单的urlrewrite配置示例: ```apacheconf RewriteEngine On RewriteBase / # 将动态URL重写为...

    httpd2.4.46 安装文件

    5. `pcre-8.10.zip`: PCRE(Perl Compatible Regular Expressions)是一个正则表达式库,Apache使用它来处理URL重写和其他基于模式匹配的任务。 接下来,我们来看看Apache的安装步骤: 1. **解压文件**:首先,...

    httpd.js:用Node.js编写的简单httpd

    6. **路由处理**:理解如何根据URL路径匹配并执行相应的处理函数,这是构建任何Web服务器的核心部分。 7. **Node.js模块系统**:了解如何导入和导出模块,以及使用npm(Node Package Manager)来安装和管理第三方...

    node-httpd:具有简单路由的 Node.js Web 服务器

    在这个项目中,路由可能是通过if-else语句或switch-case结构实现的,匹配URL并调用相应的处理函数。 ```javascript http.createServer(function (req, res) { if (req.url === '/') { // 处理主页请求 } else if...

Global site tag (gtag.js) - Google Analytics