首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php伪静态url重写教程

PHP伪静态URL重写教程

基础概念

伪静态URL(Pseudo-static URL)是指通过服务器配置或编程手段,将动态网页的URL转换成看起来像静态网页的URL。这种技术可以提高网站的SEO效果,使URL更加友好和易于记忆。

优势

  1. SEO友好:搜索引擎更喜欢静态的URL,伪静态URL可以提高网站的搜索排名。
  2. 用户体验:友好的URL更容易被用户记住和分享。
  3. 安全性:隐藏动态参数可以减少一些安全风险。

类型

  1. 基于Apache的mod_rewrite:使用.htaccess文件进行URL重写。
  2. 基于Nginx的rewrite:在Nginx配置文件中进行URL重写。
  3. 基于PHP的路由:通过PHP代码实现URL路由。

应用场景

适用于任何需要将动态URL转换为静态URL的场景,如博客、电商网站、论坛等。

实现方法

1. 基于Apache的mod_rewrite

步骤:

  1. 确保Apache服务器已经开启了mod_rewrite模块。
  2. 在网站根目录下创建或编辑.htaccess文件。
  3. 添加重写规则。

示例代码:

代码语言:txt
复制
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

参考链接:

2. 基于Nginx的rewrite

步骤:

  1. 编辑Nginx配置文件(通常是nginx.confdefault.conf)。
  2. 添加重写规则。

示例代码:

代码语言:txt
复制
server {
    listen 80;
    server_name example.com;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
}

参考链接:

3. 基于PHP的路由

步骤:

  1. 创建一个路由文件(如router.php)。
  2. 在入口文件(如index.php)中引入并使用路由。

示例代码:

代码语言:txt
复制
// router.php
$router = [
    '/' => 'HomeController@index',
    '/about' => 'AboutController@index',
];

$requestUri = $_SERVER['REQUEST_URI'];
if (array_key_exists($requestUri, $router)) {
    $controller = explode('@', $router[$requestUri])[0];
    $method = explode('@', $router[$requestUri])[1];
    $controllerInstance = new $controller();
    $controllerInstance->$method();
} else {
    echo "404 Not Found";
}

参考链接:

常见问题及解决方法

问题1:.htaccess文件不起作用

  • 原因:可能是Apache服务器没有开启mod_rewrite模块,或者.htaccess文件权限问题。
  • 解决方法
    • 确保mod_rewrite模块已开启:
    • 确保mod_rewrite模块已开启:
    • 检查.htaccess文件权限:
    • 检查.htaccess文件权限:

问题2:Nginx配置文件语法错误

  • 原因:可能是配置文件中存在语法错误。
  • 解决方法
    • 检查配置文件语法:
    • 检查配置文件语法:
    • 修正语法错误后重启Nginx:
    • 修正语法错误后重启Nginx:

问题3:PHP路由无法匹配URL

  • 原因:可能是路由规则设置不正确,或者请求方法不匹配。
  • 解决方法
    • 检查路由规则是否正确。
    • 确保请求方法(GET、POST等)与路由规则匹配。

通过以上教程,你应该能够掌握PHP伪静态URL重写的基本概念、优势、类型、应用场景以及常见问题的解决方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SEO×静态、动态、伪静态URL的特性

当然前提条件就是,动态URL最好不要带太多的复杂参数,如:符号等等。...3、伪静态 优点:大家都知道静态页面对SEO有很大益处,而且秒杀秒客网静态页面对服务器的负载很小,但静态页面的缺点是不能随时更新。...对于伪静态的优点,这个并不好讲,伪相比动态网页而言,并没有提到速度上面的提升,相比较而言,因为是“假”静态页面,其实还是一个动态页面,也是同样需要翻译为静态页面的。...伪静态对SEO的作用和真静态相同,被访问时会导致服务器负载增大,但它可以实时动态更新的确非常方便。...只要将负载问题控制合理,使用伪静态的利大于真静态,所以在很多论坛程序、CMS内容管理程序上都使用了伪静态技术。

2.7K80
  • Typecho设置伪静态去掉url中的index.php

    image.png Typecho后台设置永久链接后,域名后会莫名的有index.php,有强迫症的我完全接受不了。...例如网址 https://www.blogbig.cn/index.php/archives/robot.html我们就希望网址变成这样像静态页面的形式 https://www.blogbig.cn/archives...这就用到了我今天用到的的伪静态了,成功记录一下! 配置规则 宝塔用户直接进控制面板 网站-设置-伪静态-选择typecho模板 *不要选择typecho2模板,会出现错误 if (!...-e Extra open brace or missing close brace /index.php$1 last; } 伪静态 我用的的nginx,其他运行环境可参考伪静态规则 后台设置...后台-设置-永久链接-启用地址重写功能 永久链接 *出现检测失败的红色提示继续勾选即可 大功告成!

    2K20

    php 伪静态-服务器伪静态和WordPress固定连接设置

    比如当前这个页面的地址 com/abc.htmlphp 伪静态,Web服务器收到请求后会重新映射为 com/page.php?id=abc,然后再执行那个PHP程序。...这样,在内部不改变的情况下,对外呈现出来的网址变成了没有问号的象静态网页的网址一样。   于是有人给起了个名字叫“伪静态”。其实也没什么伪的,就是没有问号的静态网址,让搜索引擎舒服点而已。   ...的伪静态规则   如果您使用的是类似lnmp、AHM、、phpEvn这样的集成环境,一般都会集成有的伪静态,请搜索一下这些环境安装伪静态的方法。   ...我们以宝塔环境举例:   如果您是自己编译的环境,请参考:伪静态设置   固定连接设置   B2主题不支持带有问好的连接形式,必须使用自定义的形式。...这里注意php 伪静态,如果您使用/%%这种伪静态形式,可能存在部分网址冲突,请尽量用/%%.html 这种连接形式。 本文共 459 个字数,平均阅读时长 ≈ 2分钟

    4K40

    PHP伪静态的几种方法

    首先,什么是伪静态: 伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。...伪静态网址 首先,伪静态网址不能让动态网址“静态化”,伪静态仅仅是对动态网址的一个重写,Google不会认为伪静态就是HTML文档。...其次,伪静态可取,但应把重心放在去除冗余参数、规范URL、尽可能的避免重复页上。 最后,伪静态有很大潜大危险,最好在对网站系统、网站结构、内容分布、参数意义熟悉的情况下使用。...在转一个 php伪静态的实现四法: //伪静态方法一 // localhost/php100/test.php?...> 如果不想使用php来实现伪静态,可是使用 apache,nginx,iis 等服务器自带的url rewrite 功能进行设置。

    4.4K80

    wordpress站内搜索结果页URL伪静态如何操作

    站内搜索页面的优化一直被很多人忽略,只是按cms自带的默认设置,其实搜索结果页是一块宝藏,url重写是提升的重要一步。...之前我们写过帝国CMS搜索页伪静态实现方法,那么,wordpress站内搜索结果页URL伪静态如何操作呢?...通过查找相关文档,在当前主题的functions.php文件添加下面的函数ytkah亲测可用 function tongleer_search_url_rewrite() { if ( is_search...empty( $_GET['s'] ) ) { wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( 's' )...:通过在.htaccess文件添加伪静态规则也可以实现,把下面的代码添加到网站根目录的.htaccess文件(对支持.htaccess的主机有效) RewriteCond %{QUERY_STRING}

    1.7K81

    php静态延迟方法,phpstatic延迟静态绑定_PHP教程

    他指的是解析上下文,因此如果运行上面的列子,将会得到 Fatal error: Cannot instantiate abstract class U in D:\wamp\www\test\oop\static.php...php5.3之前,在这方面都有严格的限制,产生过很多笨拙的解决方案,php5.3引入了延迟静态绑定 及使用 关键字 static static类似self,但它指的是被调用的类而不是包含类。...} class u1 extends U{ } class u2 extends U{ } u1::create(); static不仅可以用于实例化,和self,parent一样还可以作为静态方法的调用标识符...,甚至是从非静态上下文中调用 abstract class U{ private $group; public function __construct(){ $this->group=static...static function create(){ return new u1(); } } class u2 e… 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php

    1.1K10

    解决Emlog博客程序伪静态后URL不是唯一地址的教程

    使用EM博客程序的朋友应该知道,伪静态后URL不是唯一性的,举个很简单的例子: 标准地址为:http://域名/1.html 但同时地址:http://域名/xx/1.html,http://域名/?...post=xxx也正常打开,其中的XX为任意数字或者字母 这个是因为伪静态规则的问题,因为正则匹配 /([^./?=]+)(.html) 可以匹配 / 开始 一个或多个 不是 . / ?...虫子不懂伪静态规则,不过用php到是解决了这个问题,虫子提供的方法非常的简单粗暴,不知道有没有Bug的哦 本段代码通用代码,直接把下面代码放入echo_log.php和page.php第一行就可以了 php $page=isset($params[5])?intval($params[5]):1; if(BLOG_URL.trim(Dispatcher::setPath(),'/') !...=Url::log($logid) && $page==1 && $p==''){header('Location:'.Url::log($logid));} ?> 如遇问题,请在本页留言。

    17320

    解决Emlog博客程序伪静态后URL不是唯一地址的教程

    使用EM博客程序的朋友应该知道,伪静态后URL不是唯一性的,举个很简单的例子: 标准地址为:http://域名/1.html但同时地址:http://域名/xx/1.html,http://域名/?...post=xxx也正常打开,其中的XX为任意数字或者字母 原文地址:https://www.shuyong.net/931.html 这个是因为伪静态规则的问题,因为正则匹配 /([^./?...舍力不懂伪静态规则,不过用php到是解决了这个问题,舍力提供的方法非常的简单粗暴,不知道有没有Bug的哦 本段代码通用代码,直接把下面代码放入echo_log.php和page.php第一行就可以了...php $page=isset($params[5])?intval($params[5]):1;if(BLOG_URL.trim(Dispatcher::setPath(),'/') !...> 注意:使用上面代码,如果文章页有分页的可能造成错误哦 这也是一个很好修复emlog文章链接任意字符的教程!

    1K40

    WordPress固定链接伪静态设置图文教程

    WordPress由于是PHP系统,所以不能完美静态化,只可以实现伪静态化,,并且只针对文章,其它页面、存档、日期的页面不可以伪静态化。...-f $request_filename){ rewrite (.*) /index.php; } } 2、Windows主机IIS环境下伪静态规则 你使用的windows主机必须安装了装Rewrite...组件才能支持伪静态,咨询下你的主机商所使用的主机是否支持伪静态,支持的话请继续往下看。... L RewriteRule /(.*) /index.php/$1 L PS: 如果你不知道所使用的主机是什么系统,或使用的Linux或Windows系统的VPS主机,不会配置伪静态规则,可以咨询你的空间商...,他们会帮助你实现wordpress伪静态,虽然设置了伪静态,只是展示的伪静态后缀,其实还是动态页面,如果想完全静态页面,可以安装WP Super Cache或者Hyper Cache插件,为全站生成静态页面缓存

    4.2K40

    WordPress程序固定链接与伪静态设置教程

    WordPress默认链接是参数的形式,也就是常说的动态链接,这种链接对于SEO来说并不是很友好,所以一般我们都会对WordPress的固定链接格式进行修改,设置成伪静态。...伪静态与静态的区别就是链接看起来是和静态页面链接一样,但是其实页面还是程序动态生成的。...伪静态是需要服务器支持的,比如mod_rewrite模块、伪静态规则的配置,具体可以咨询服务器管理员,另外部分服务器可能不支持中文链接,这个需要注意。...我这里用的宝塔面板伪静态规则就选 设置方法 进入WordPress后台设置>固定链接,其中第一个“朴素”就是默认的设置,后面几个是WordPress给出的几个可选项,如果都不是你喜欢的链接格式,那么也可以使用最后一个自定义结构...设置好了以后,保存即可完成固定链接和伪静态的设置了。

    1.1K20
    领券