検索
ホームページphp教程php手册php伪静态的写法,apache伪静态规则

在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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール