Home Backend Development PHP Tutorial php兑现url伪静态化

php兑现url伪静态化

Jun 13, 2016 am 10:54 AM
array check php test url

php实现url伪静态化

url的静态化,我一般借助于apache,nginx,htaccess等,很少用php来实现url的静态化,用php来实现静态化比较麻烦,所以就个人而言是不推荐使用php来实现url静态化

一,url的静态化实现的原理

1,通过程序来把动态的url转换成静态的url,转换方法最好是统一的接口。把静态的url放到html中,这样我们通过页面看到的就是静态的url。

2,apache或者其他,加载rewrite模块,添加重写规则。这样当我们点页面中的静态url时,就可以转向正确的url了。虽然执行的还是php文件,但是浏览器的地址栏中显示出来的,还是静态的url。

如果用php来实现url静态化,也要保持地址栏里面也要静态的url,这个比较麻烦的,下面就这个来举个简单的例子。

二,把动态url转换成静态url

1

<?php//将url转换成静态urlfunction url_rewrite($file, $params = array (), $html = "", $rewrite = true) {        if ($rewrite) { //开发阶段是不要rewrite,所在开发的时候,把$rewrite = false      $url = ($file == 'index') ? '' : '/' . $file;       if (! empty ( $params ) && is_array ( $params )) {          $url .= '/' . implode ( '/', array_slice($params, 0 , 2));          $param = array_slice($params, 2);           foreach($param as $key => $value){               $url .= '/' . $key . '/' . urlencode ( $value );            }       }       if (! empty ( $html )) {            $url .= '.' . $html;        }   } else {        $url = ($file == 'index') ? '/' : '/' . $file;              if (substr ( $url, - 4 ) != '.php' && $file != 'index') {           $url .= '.php';     }               if (! empty ( $params ) && is_array ( $params )) {          $url .= '?' . http_build_query ( $params );     }   }   return $url;}echo url_rewrite ( 'test', array ('class' => "User", 'act' => 'check', 'name' => 'tank','page'=>5 ) );echo "<br/>";//$rewrite = false的情况下,显示如下/test.php?class=User&act=check&name=tankecho url_rewrite ( 'test.php', array ('class' => "User", 'act' => 'check', 'name' => 'tank' ) );echo "<br/>";//$rewrite = true的情况下,显示如下/test.php/User/check/tankecho url_rewrite ( 'test', array ('class' => "User", 'act' => 'check', 'name' => 'tank' ) );echo "<br/>";//$rewrite = true的情况下,显示如下/test/User/check/tankecho url_rewrite ( 'test', array ('class' => "User", 'act' => 'check', 'name' => 'tank' ), 'html' );echo "<br/>";//$rewrite = true的情况下,显示如下/test/User/check/tank.html?><a href="./test3<?php echo url_rewrite('test.php',array('class'=>"User",'act'=>'check','name'=>'tank'));?>">test</a>

Copy after login

?上面简单的写了一个方法,把动态url转换成静态的url,页面中会产生链接如下:

1

<a href="./test3/test.php/User/check/name/tank">test</a>?

Copy after login

到这儿如果直接点击的话,肯定会报404错误的,因为根不可能找到tank这个目录的。难点也在这儿,所以我们要把找不到的目录和文件指定一个php文件。这个要利用到apache,nginx,或者htaccess等。

三,指定一个统一入口

1

RewriteCond %{REQUEST_FILENAME} !-f  //找不到文件RewriteCond %{REQUEST_FILENAME} !-d  //打不到目录RewriteRule . /test3/index.php [L]

Copy after login

?

不管你是以.htaccess的方式来实现,还是写在apache等的配置文件中,都是可以的。上面三句话是什么意思呢,如果找不到目录转到index.php文件,如果找不到文件,也转到index.php。

这样做了,当我们访问http://localhost/test3/test.php/User/check/tank时候,就会转到index.php来,既然知道到那个php文件了,那就好办了。

以下内容都是以http://localhost/test3/test.php/User/check/tank这种重写的方式来操作的,其他方式也都差不多。

四,index.php文件,URL映射解析类http://hudeyong926.iteye.com/admin/blogs/1113971

1

<?php$filename = $_SERVER['REQUEST_URI'];  //请求的url/**请求的url,"/test3/test.php/User/check/tank" * test.php 要去的php文件 * User 是class名 * check 是class中的方法名 * tank 是要传到check的参数*/preg_match("/(\w+\.php)/",$filename,$match);    //查找php文件名$array =  explode('/',$filename);       //将静态url进行分割$key  =  array_keys($array,$match[0]);  //得到文件所对应的下标Array ( [0] => 2 )$file_array = array_slice($array,0,$key[0]+1);  //Array ( [0] => [1] => test3 [2] => test.php )$param_array = array_slice($array,$key[0]+1);   //Array ( [0] => User [1] => check [2] => tank ) $file_path = implode('/',$file_array);if($array[$key[0]] != "index.php"){ include_once($array[$key[0]]);            //包函请求url中的php文件,在这里是test.php}if(class_exists($param_array[0])){     //判断一下test.php这个文件中有没有User这个class $obj = new $param_array[0]; if(method_exists($obj,$param_array[1])){   //判断一下User这个class中有有没有check这个方法 $obj->$param_array[1]($param_array[3]);  //调用这个方法,结果是(我的名子叫tank) }}?>

Copy after login

?五,test.php文件

1

<?phpclass User { public function check($name){ echo "我的名子叫".$name; }}?>

Copy after login

到这儿,当我们访问http://localhost/test3/test.php/User/check/tank这个网址的时候,

结果如下:我的名子叫tank,并且地址栏还仍然保持着静态。

到这儿通过php,我们完成了一个简单的url的重写过程。其实还是借助了.htaccess,或者apache等,但是重写的规则没有在.htaccess,或者apache中。如果完全用php来实现url的静态化,个人感觉,不可能。

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles