首页 php教程 php手册 php伪静态的写法,apache伪静态规则

php伪静态的写法,apache伪静态规则

May 25, 2016 pm 04:44 PM

在php中我们要做伪静态可以直接利用php来处理url,但这种伪静态不是标准的可以说看起来像水货一样的,只是找个心里舒服了,当然如果要实现真正的伪静态我们可以使用apache Rewrite伪静态模块来实例,下面大家来看看.

php程序实现伪静态url,伪静态方法一:

<?php
// localhost/php100/test.php?id|1@action|2
$Php2Html_FileUrl = $_SERVER["REQUEST_URI"];
echo $Php2Html_FileUrl . "<br>"; // /php100/test.php?id|1@action|2
$Php2Html_UrlString = str_replace("?", "", str_replace("/", "", strrchr(strrchr($Php2Html_FileUrl, "/") , "?")));
echo $Php2Html_UrlString . "<br>"; // id|1@action|2
$Php2Html_UrlQueryStrList = explode("@", $Php2Html_UrlString);
print_r($Php2Html_UrlQueryStrList); // Array ( [0] => id|1 [1] => action|2 )
echo "<br>";
foreach ($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr) {
    $Php2Html_TmpArray = explode("|", $Php2Html_UrlQueryStr);
    print_r($Php2Html_TmpArray); // Array ( [0] => id [1] => 1 ) ; Array ( [0] => action [1] => 2 )
    echo "<br>";
    $_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];
}
//echo &#39;假静态:$_GET变量<br />&#39;;
print_r($_GET); // Array ( [id|1@action|2] => [id] => 1 [action] => 2 )
echo "<br>";
echo "<hr>";
echo $_GET[id] . "<br>"; // 1
echo $_GET[action]; // 2
?>
登录后复制

php程序实现伪静态url,伪静态方法二:

<?php
// localhost/php100/test.php/1/2
$filename = basename($_SERVER[&#39;SCRIPT_NAME&#39;]);
echo $_SERVER[&#39;SCRIPT_NAME&#39;] . "<br>"; // /php100/test.php
echo $filename . "<br>"; // test.php
if (strtolower($filename) == &#39;test.php&#39;) {
    if (!emptyempty($_GET[id])) {
        $id = intval($_GET[id]);
        echo $id . "<br>";
        $action = intval($_GET[action]);
        echo $action . "<br>";
    } else {
        $nav = $_SERVER[&#39;REQUEST_URI&#39;];
        echo "1:" . $nav . "<br>"; // /php100/test.php/1/2
        $script = $_SERVER[&#39;SCRIPT_NAME&#39;];
        echo "2:" . $script . "<br>"; // /php100/test.php
        $nav = ereg_replace("^$script", "", urldecode($nav));
        echo $nav . "<br>"; // /1/2
        $vars = explode("/", $nav);
        print_r($vars); // Array ( [0] => [1] => 1 [2] => 2 )
        echo "<br>";
        $id = intval($vars[1]);
        $action = intval($vars[2]);
    }
    echo $id . &#39;&&#39; . $action;
}
?>
登录后复制

php程序实现伪静态url,伪静态方法三:

<?php
function mod_rewrite() {
    global $_GET;
    $nav = $_SERVER["REQUEST_URI"];
    echo $nav . "<br>";
    $script_name = $_SERVER["SCRIPT_NAME"];
    echo $script_name . "<br>";
    $nav = substr(ereg_replace("^$script_name", "", urldecode($nav)) , 1);
    echo $nav . "<br>";
    $nav = preg_replace("/^.ht(m){1}(l){0,1}$/", "", $nav); //这句是去掉尾部的.html或.htm
    echo $nav . "<br>";
    $vars = explode("/", $nav);
    print_r($vars);
    echo "<br>";
    for ($i = 0; $i < Count($vars); $i+= 2) {
        $_GET["$vars[$i]"] = $vars[$i + 1];
    }
    return $_GET;
}
mod_rewrite();
$year = $_GET["year"]; //结果为&#39;2006&#39;
echo $year . "<br>";
$action = $_GET["action"]; //结果为&#39;_add&#39;
echo $action;
?>
登录后复制

php程序实现伪静态url,伪静态方法四:

<?php
//利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html 也就是执行脚本名后面的部分
if (@$path_info = $_SERVER["PATH_INFO"]) {
    //正则匹配一下参数
    if (preg_match("/\/(\d+),(\d+),(\d+)\.html/si", $path_info, $arr_path)) {
        $gid = intval($arr_path[1]); //取得值 1
        $sid = intval($arr_path[2]); //取得值100
        $softid = intval($arr_path[3]); //取得值8630
        
    } else die("Path:Error!");
    //相当于soft.php?gid=1&sid=100&softid=8630
    
} else die(&#39;Path:Nothing!&#39;);
?>
登录后复制

如果你有服务器权限我觉得还是使用apache伪静态.

一、Apache配置:

进入/etc/httpd/conf/目录下,打开httpd.conf文件,启用rewrite:

# LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 #
登录后复制

启用.htaccess

AllowOverride None 修改为:AllowOverride All

二、Rewrite写法:

服务器有配置文件不可能由我们来改,所以大多情况下要在网站的根目录下建一个.htaccess文件,代码如下:

RewriteEngine on //启动rewrite引擎 
RewriteRule ^/index([0-9]*).html$ /index.php?id=$1 //"([0-9]*)" 代表范围 用(.*)代表所有,下同。 
RewriteRule ^/index([0-9]*)/$ /index.php?id=$1 [R] //虚拟目录
登录后复制

三、mod_rewrite 规则修正符

1) R 强制外部重定向

2) F 禁用URL,返回403HTTP状态码。

3) G 强制URL为GONE,返回410HTTP状态码。

4) P 强制使用代理转发。

5) L 表明当前规则是最后一条规则,停止分析以后规则的重写。

6) N 重新从第一条规则开始运行重写过程。

7) C 与下一条规则关联

如果规则匹配则正常处理,以下修正符无效

8) T=MIME-type(force MIME type) 强制MIME类型

9) NS 只用于不是内部子请求

10) NC 不区分大小写

11) QSA 追加请求字符串

12) NE 不在输出转义特殊字符 %3d$1 等价于 =$1


文章网址:

随意转载^^但请附上教程地址。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1674
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24