php伪静态的写法(apache伪静态规则)

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 '假静态:$_GET变量<br />';
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
//伪静态方法二
// localhost/php100/test.php/1/2
$filename = basename($_SERVER['SCRIPT_NAME']);
echo $_SERVER['SCRIPT_NAME']."<br>";// /php100/test.php
echo $filename."<br>";// test.php
if(strtolower($filename)=='test.php'){
if(!empty($_GET[id])){
$id=intval($_GET[id]);
echo $id."<br>";
$action=intval($_GET[action]);
echo $action."<br>";
}else{
$nav=$_SERVER['REQUEST_URI'];
echo "1:".$nav."<br>";// /php100/test.php/1/2
$script=$_SERVER['SCRIPT_NAME'];
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.'&'.$action;
}
?>
 
<?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"];//结果为'2006'
echo $year."<br>";
$action=$_GET["action"];//结果为'_add'
echo $action;
?>
 
<?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('Path:Nothing!');
?>

如果你有服务器权限我觉得还是使用apache%CE%B1%BE%B2%CC%AC/" target="_blank">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

时间: 2024-10-27 21:34:57

php伪静态的写法(apache伪静态规则)的相关文章

apache 伪静态配置方法

apache 伪静态配置方法 Apache伪静态html(URL Rewrite)设置法 phpma一 打开 Apache 的配置文件 httpd.conf . phpma二 将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉 phpma三 在 httpd.conf中添加: <IfModule mod_rewrite.c>     RewriteEngine On     #RewriteCond %{ENV:SCRIPT_URL} (?

thinkphp-PHP Apache 伪静态规则解惑

问题描述 PHP Apache 伪静态规则解惑 3C RewriteRule ^([^.]*)$ index.php/$1 [L] 和 RewriteRule ^(.*)$ index.php/$1 [L] 这两个有什么区别? 为什么第二种写法,在规则之前再写其他规则,都会报错,而第一种就正常呢? 比如MVC框架配置一个前台一个后台,这样写就可以,如下:RewriteRule ^admin/(.*)$ admin.php/$1 [L]RewriteRule ^([^.]*)$ index.php

apache伪静态与iis伪静态规则与配置区别介绍_Linux

本文章来总结一下关于apache伪静态与iis伪静态区别介绍,主要讲到了一些规则的问题与配置区别,以后大家就可以直接在iis伪静态转换apache,反之也很简单哦. 在我开时打开模式不一样:apache的.htaccess配置文件是以:RewriteEngine On 将写模式打开.Apache伪静态html(URL Rewrite)设置法phpma一 打开 Apache 的配置文件 httpd.conf .phpma二 将#LoadModule rewrite_module modules/m

真正可用的IIS的ISAPI-Rewrite伪静态URL图片防盗链规则写法_win服务器

网站程序的URL伪装法.服务器端的收费插件法和ISAPI-REWRITE的规则过滤法等,考虑自身网站结构和钱包的困难问题,最终选择了后者,即现在流行用来做伪静态的ISAPI Rewrite书写规则来实现 经测试四种情况正常,即站内链接正常,白名单里的链接正常,盗链者链接屏蔽,搜索引擎链接正常. 详细如下: 一.完全屏蔽所有盗链来源的写法(如已有其它规则,则置于已有规则的上面) 复制代码 代码如下: RewriteCond Host: (.+) RewriteCond Referer: (?!ht

linux apache 伪静态详细说明

linux apache 伪静态详细说明 一 打开 apache 的配置文件 httpd.conf . 二 将#loadmodule rewrite_module modules/mod_rewrite前面的#去掉 三 在 httpd.conf中添加: <ifmodule mod_rewrite.c>     rewriteengine on     #rewritecond %{env:script_url} (?:index|dispbbs)[-0-9]+.html     rewrite

apache伪静态配置与iis伪静态配置的区别分析对比

apache伪静态配置与iis伪静态配置的区别分析对比 /* 在web开发中,经常会碰以要把php教程,asp教程文件伪静态成htm或其它文件,下面我们要讲一下关于apache伪静态规则与iis中伪静态规则的一些不同的部份了.下面我们先来看看apache伪静态的配置方法. 实例,我们要把 pl.php教程?id=1 page.php?id=1 伪静态成html页面 d-1.html v-1.html <virtualhost 192.168.0.110:801>     serveradmin

apache伪静态配置 .htaccess

在windows系统下,下无法将  htaccess.txt 重命名为 .htaccess,怎么办?很简单,用记事本打开,htaccess.txt, 然后再选择"另存为"的方式,就可以重命名为.htaccess了 .htaccess 文件是Apache服务器中最常用的一个配置文件,它负责相关目录下的网页配置.通过 htaccess文件,可以帮我们实现:网页301重定向.自定义404错误页面.改变文件扩展名.允许/阻止特定的用户或者目录的访问.禁止目录列表. 配置索引入口等功能.   1

DiscuzX3.1标签(TAG)目录化伪静态修改教程(附规则)

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 使用discuz论坛的站长都知道discuz论坛系统不支持对TAG的伪静态,网上搜一下Discuz标签伪静态教程是什么多,但是大多是正对2.5做的修改,今天酷米论坛站长分享一个针对DiscuzX3.1最新版TAG目录化伪静态,伪静态与目录化伪静态哪一个好大家可以看看<百度搜索引擎优化指南>v2.1.2,好了废话不多说,假面教程开始

nginx+apache伪静态问题,跪求解决方案...

问题描述 nginx+apache架构?遇到个棘手的问题,我的网站是用nginx+apache架构的nginx处理静态文件,动态后端交给apache处理网站需要设置伪静态,无疑必须是apache的规则那么nginx默认处理html文档.但是,网站404..怎么搞啊?设置成动态就可以访问. 解决方案 解决方案二:howdidyousetupnginxasthereversedproxy?Doesnginxforwardtheparameterstothebackendapache?解决方案三:我觉