php 伪静态之IIS篇

好的。首先,什么是 PHP 伪静态?PHP 的伪静态是指在不改动 URL 实际参数的情况下,实现网站 URL 规则的重写。在 IIS 上要实现 PHP 伪静态,需要经过以下步骤:

1.开启 URL 重写模块

在 IIS 管理器中,找到服务器节点,点击“管理的功能”下面的“添加角色和功能”。选择 Web 服务器(IIS)角色,选择“常规功能”,查找并勾选“URL 重写”,进入下一步完成安装。安装完成后,在 IIS 中找到“URL 重写”选项,确保模块已启用。

2.创建 web.config 文件

在网站根目录下创建一个名为“web.config”的文件,并加入以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Rewrite to PHP file" stopProcessing="true">
          <match url="^(.*)$" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.php/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

这份代码开启了 URL 重写的规则。可以看到,这个规则会将 URL 中的所有内容(使用正则表达式 ^(.*)$ 匹配)传递给 index.php 文件。当然,如果想把所有请求都重定向到一个特定的 PHP 文件,只需要把上述代码最后一行的“url=/index.php/{R:1}”改为“url=/your_php_file.php/{R:1}”。

3.修改 PHP 代码

这一步是可选的,如果你的 PHP 代码本就可以支持不同的 URL 规则,那么就可以省略这一步。不过,大多数情况下,我们还是需要修改一下 PHP 代码。

在 PHP 中使用 $_SERVER['PATH_INFO'] 获取 URL 参数。由于前面的 web.config 规则中,我们已经将所有请求都传递给了 index.php 文件,因此在这个文件中就可以通过 $_SERVER['PATH_INFO'] 来获得 URL 的所有参数。以下是一个简单示例:

<?php
// 根据 $_SERVER['PATH_INFO'] 获取参数
$url_param = explode('/', $_SERVER['PATH_INFO']);

// 进行相应操作
switch($url_param[1]) {
  case 'article':
    include('article.php?id=' . $url_param[2]);
    break;
  case 'page':
    include('page.php?id=' . $url_param[2]);
    break;
  default:
    include('home.php');
    break;
}
?>

这段代码通过 $_SERVER['PATH_INFO'] 获取 URL 参数,并进行了简单的处理,根据参数不同来调用不同的 PHP 文件。这里只提供一个示例,实际使用中需要根据自己的代码进行修改。

4.示例说明

以下是两个示例,帮助理解 PHP 伪静态的实现。

示例一

假设我们有一个文章列表页面,URL 的格式为“/articles.php?type=tech&page=1”。如果使用 PHP 伪静态,可以将其转换为“/article/tech/1/”,更加优美和易读。

实现方法如下:

在 web.config 文件中加入以下代码:

<rule name="Rewrite article list" stopProcessing="true">
  <match url="^articles/(.*)/(.*)/$" />
  <action type="Rewrite" url="/articles.php?type={R:1}&amp;page={R:2}" />
</rule>

这段代码会将 URL 中的“/articles/[type]/[page]/”转换为“/articles.php?type=[type]&page=[page]”。

然后在 articles.php 文件中,可以通过 $_SERVER['PATH_INFO'] 来获取 URL 参数:

<?php
// 获取 URL 参数
$url_param = explode('/', $_SERVER['PATH_INFO']);
$article_type = $url_param[2];
$page_num = $url_param[3];

// 根据参数查询文章列表
// ...
?>

示例二

假设我们有一个东西列表页面,URL 的格式为“/things.php?type=book&sort=price&order=asc”,如果使用 PHP 伪静态,可以将其转换为“/thing/book/price-asc/”。

实现方法如下:

在 web.config 文件中加入以下代码:

<rule name="Rewrite thing list" stopProcessing="true">
  <match url="^thing/(.*)/(.*)-(.*)/$" />
  <action type="Rewrite" url="/things.php?type={R:1}&amp;sort={R:2}&amp;order={R:3}" />
</rule>

这段代码会将 URL 中的“/thing/[type]/[sort]-[order]/”转换为“/things.php?type=[type]&sort=[sort]&order=[order]”。

然后在 things.php 文件中,可以通过 $_SERVER['PATH_INFO'] 来获取 URL 参数:

<?php
// 获取 URL 参数
$url_param = explode('/', $_SERVER['PATH_INFO']);
$thing_type = $url_param[2];
$thing_sort = substr($url_param[3], 0, strpos($url_param[3], '-'));
$thing_order = substr($url_param[3], strpos($url_param[3], '-') + 1);

// 根据参数查询东西列表
// ...
?>

这两个例子说明了 PHP 伪静态的实现过程,以及如何将普通的 URL 转换为更加优美的形式。当然,具体实现还需要根据自己的具体需求进行调整和修改。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php 伪静态之IIS篇 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • NET IIS暴绝对路径漏洞

    NET IIS暴绝对路径漏洞(Net IIS Absolute Path Traversal)是指攻击者通过构造恶意请求,利用.NET IIS服务器对请求的处理不当,从而突破服务器对访问路径的限制,获得未授权的访问权限的一种攻击手段。在此漏洞中,攻击者利用特殊字符对访问路径进行伪装,导致服务器无法识别路径的真实性,当服务器对该目录进行访问操作时,攻击者便可获…

    IIS 2023年5月26日
    00
  • IIS7下配置SSL的方法分析

    下面是“IIS7下配置SSL的方法分析”的完整攻略: 什么是SSL 先来简单了解一下SSL。SSL(Secure Socket Layer)是一种安全协议,它为网络通信提供安全及数据完整性保证。通过SSL协议,客户端和服务器端之间的通信变得安全可靠,不会被第三方窃听和篡改。 配置SSL的前置条件 在配置SSL前,需要先确保满足以下前置条件: 服务器上已经安装…

    IIS 2023年5月26日
    00
  • windows服务器ssl证书创建、安装及配置方法

    下面我将为你详细讲解“Windows服务器SSL证书创建、安装及配置方法”的完整攻略。 1. 创建SSL证书 在 Windows 服务器上创建 SSL 证书,首先需要安装 OpenSSL,具体步骤如下: 下载 OpenSSL。 在官网 https://www.openssl.org/source/ 下载 OpenSSL 的最新版本,解压到一个路径下。 进入 …

    IIS 2023年5月26日
    00
  • IIS8中安装和使用URL重写工具(URL Rewrite)的方法

    IIS URL Rewrite是一个为IIS服务器提供URL重写和请求路由管理功能的扩展程序,它使得网站重构变得更加方便,同时可以提高网站的可读性和SEO优化。接下来,本文将为你详细介绍IIS8中安装和使用URL Rewrite的方法。 安装URL Rewrite 步骤1. 下载安装程序 首先,你需要下载IIS8 URL Rewrite安装程序。可以从官方网…

    IIS 2023年5月26日
    00
  • WordPress在IIS服务器上的伪静态设置方法(解决中文URL无法访问问题)

    下面是详细讲解“WordPress在IIS服务器上的伪静态设置方法(解决中文URL无法访问问题)”的完整攻略。 标题 问题描述 在使用IIS服务器托管WordPress时,由于IIS对中文字符或者特殊字符解析不兼容的原因,导致WordPress中的URL只能使用英文字符才能正常访问,而中文字符无法访问。针对这个问题,本文为大家提供一种解决方案。 解决方案 在…

    IIS 2023年5月26日
    00
  • windows+IIS 环境下以Fastcgi方式配置php 5.3.3的方法

    要在Windows+IIS环境下以FastCGI方式配置php 5.3.3,首先需要进行以下步骤: 安装PHP 在官方网站下载PHP 5.3.3版本,并解压到本地目录,例如C:\php。 安装FastCGI模块 打开IIS管理器,选择“服务器节点”,找到“服务器管理”,然后选择“添加角色或功能”,在“Web服务器(IIS)角色”上单击“下一步”,并根据提示一…

    IIS 2023年5月26日
    00
  • Windows 2016 IIS10.0+PHP+MySQL环境搭建

    Windows 2016 IIS10.0+PHP+MySQL环境搭建攻略 1、环境要求 在安装 Windows 2016 IIS10.0+PHP+MySQL 环境前,请确保机器已经安装以下组件: Windows Server 2016操作系统 IIS 10.0 PHP MySQL 2、安装PHP 步骤一:下载PHP 从官方网站上下载PHP压缩包,下载地址为:…

    IIS 2023年5月26日
    00
  • win7彻底卸载iis7 web,ftp服务的方法

    以下是“win7彻底卸载iis7 web,ftp服务的方法”的完整攻略: 1. 确认系统版本 首先,我们需要确认系统版本,因为只有专业版、旗舰版和企业版才自带iis7 web,ftp服务。如果你的Win7版本不属于这三种之一,那么就不需要卸载。 2. 卸载iis7 web,ftp服务 开始操作卸载之前,我们需要先在控制面板中找到程序或功能。 然后,选择“打开…

    IIS 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部