.htaccess 伪静态怎么用

来源:3-4 Nginx下rewrite配置

Jartins

2018-01-08 00:13

问题背景:首先该取消的注释都取消了
                   其次重启apache后 phpinfo 可以查询到mod_rewrite

需要解惑:不想在vhosts.conf中配置伪静态 而在根目录下用.htaccess  求指点 谢谢

写回答 关注

1回答

  • 杜朝辉
    2018-01-29 18:49:23

    一、如何建立【.htaccess】文件

    直接新建一个文件,并且命名为【.htaccess】是无法实现的,这是一个只有扩展名,没有文件名的文件,系统会提示输入文件名。我们可以用如下方法实现:

    1、下载一个这个文件;

    2、使用FTP、DW、记事本等软件建立,FTP可以直接建立这个文件,软件的话新建一个文件另存一下就可以了;

    3、使用CMD或其他操作系统界面重命名文件为【.htaccess】;

    4、【.htaccess】文件通常放置在根目录下,也可放置在子目录中,其效力范围为相对当前的路径,路径规则与html一致。

     

    二、让【.htaccess】文件生效

    有时候放置了【.htaccess】文件发现并没有作用,是因为Apache没有开启它,我们可以在Apache的安装目录的【conf】目录中找到【httpd.conf】文件,使用记事本打开,开启这个选项:

    1、找到【LoadModule rewrite_module】,去掉前面的【#】号;

    2、找到所有【AllowOverride None】修改为【AllowOverride All】

    3、如果没有【AllowOverride None或All】这条,则找到【<Directory />】和【</Directory>】,在这之间加上【AllowOverride All】;

    4、重启Apache即可生效。

     

    三、实例

    伪静态路径:【http://www.abc.com/news/post-16.html】

    真实路径:【http://www.abc.com/index.php?m=post&c=index&catdir=news&id=16】

    【.htaccess】写法:

    ============

    RewriteEngine on

    RewriteRule http://www.abc.com/([a-zA-Z]{1,})/post-([0-9]{1,})\.html$ http://www.abc.com/index.php?m=post&c=index&catdir=$1&id=$2

    ============

    当然,如果是放在根目录下,使用相对路径即可:

    ============

    RewriteEngine on

    RewriteRule ([a-zA-Z]{1,})/post-([0-9]{1,})\.html index.php?m=post&c=index&catdir=$1&id=$2

    ============

     

    解释:

    注意,因为显示的问题,可能看不清空格,可以复制代码粘贴到其他软件查看。

    文件中【RewriteEngine on】表示开启rewrite;

    【RewriteRule】表示规则,每行一条,格式为【RewriteRule 匹配用户提交的的URL 服务器上脚本真正的URL】;

    路径中的染色部分为参数,匹配时为标准的正则表达式,真实路径中的参数使用【$1】、【$2】、【$3】从左到右依次替代匹配URL中的正则表达式。

     

    验证:

    建立一个.htaccess文件,写入以下内容:

    ============

    RewriteEngine on
    RewriteRule ([a-zA-Z]{1,})/post-([0-9]{1,})\.html test.php?get1=$1&get2=$2

    ============

    保存。

     

    再建立一个test.php文件,写入以下内容:

    ============

    <?php

    echo '你的get1是:' . $_GET['get1'];

    echo '<br/>';

    echo '你的get2是:' . $_GET['get2'];

    ?>

    ============

    保存到同目录。

     

    访问http://localhost/news/post-15.html

    如果页面显示:

    ============

    你的get1是:news
    你的get2是:15

    ============

    即宣告成功。


PHP实现页面静态化

网站开发必备技能—页面静态化,帮助大家掌握一项加薪利器

55589 学习 · 115 问题

查看课程

相似问题