伪静态安装方案

admin   ·   发表于 2016-8-14   ·   谈天说地

伪静态介绍


伪静态是什么?请先看一下您自己的网站,随便进入一个帖子。

浏览器的地址 是不是呈现: http:/***/?t/1.html

可见,地址中存在了一个 ?号, 而作为开发者来说 都知道 ?号是传递参数数据到服务器的, 但是默认链接却占用了

如果我们想传入参数  id=x  那么URL地址将会变成

http:/***/?t/1.html?id=x

可见在URL后面追加了 ?id=x 

如果我们默认网站不处理这种出现多个? 符号的将会出现 SEO 问题

而且开发也会造成问题 因为URL地址出现了 两个问号,所以从里面取出参数 就会出现错误。

虽然HYPHP可以处理多个?号带来的错误  但是SEO 搜索引擎 或者一些 微信 QQ 支付宝等 回调类内容 将无法开发。

比如 QQ互联登录插件,  为什么必须使用伪静态,原因是回调的URL 不支持 ? 号  不支持回调自定义参数,所以就会在申请的时候 填入回调地址 无法通过的问题!


所以我们要做的 就是去掉 ? 号



请根据自己的环境选择伪静态规则.

有的朋友不知道自己是什么环境的, 可以通过管理员后台首页查看



通常大家用的环境都是 IIS, APACHE ,NGINX  (还是补充个小写吧  iis, apache, nginx)

大部分国内空间用的都是 IIS 以及 APACHE 

而且都有切换PHP版本的功能, 我建议大家将PHP版本提升到最高. 



Apache 伪静态 

Apache的伪静态是最简单 易用的. 

直接在网站根目录下创建文件:    .htaccess  (注意: 不要在前面加什么 x.htaccess . 该文件不需要文件名 只需要后缀)


写入内容: 

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</IfModule>

如果完成以上操作 依然无法使用. 那可能是你的Apache为开启伪静态模块

在Apache 安装目录中找到 conf/httpd.conf 文件

在该文件中搜索 :   mod_rewrite  

即可找到关键字

#LoadModule rewrite_module modules/mod_rewrite.so

如果你看到 前面有一个# 号 说明伪静态模块并未开启

所以你需要将 #号去除, 保存文件 重启Apache进程即可!  不会重启Apache的 请重启主机吧!


Nginx


Nginx的伪静态安装时比较麻烦的, 因为Nginx一般会在Linux下安装使用, 空间以及Windows用的较少.

你需要来到Nginx的Conf目录

这里用LNMP的安装目录作为说明

LNMP中的Nginx目录在 /usr/local/nginx中

# cd /usr/local/nginx/conf/vhost

在目录中找到你的网站目录vhost

(这里可能有人不理解 我也不知道怎么说的明白)

# vi 你的目录名.conf

打开文件后可见内容:

server
    {
        listen 80;
        #listen [::]:80;
        server_name bbs.hyphp.cn bbs.hyyyp.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/bbs.hyphp.cn;

        include other.conf;
        #error_page   404   /404.html;
        include enable-php.conf;
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }
......
........
...
省略..

在中间插入: 

if (!-e $request_filename) {
 rewrite  ^(.*)$  /index.php?s=$1  last;
 break;
  }
server
    {
        listen 80;
        #listen [::]:80;
        server_name bbs.hyphp.cn bbs.hyyyp.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/bbs.hyphp.cn;

        include other.conf;
        #error_page   404   /404.html;
        include enable-php.conf;
if (!-e $request_filename) {
 rewrite  ^(.*)$  /index.php?s=$1  last;
 break;
}
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

插入后就是上面的结构了 

保存该Conf即可

重启Nginx 完成


IIS 7 以上

IIS7版本以上安装了URL重写支持才会支持 Web.config 伪静态

在根目录写入以下内容  保存为  Web.config

<?xml version="1.0" encoding="UTF-8"?>
 <configuration>
    <system.webServer>
 <rewrite>
  <rules>
  <rule name="OrgPage" stopProcessing="true">
  <match url="^(.*)$" />
  <conditions logicalGrouping="MatchAll">
  <add input="{HTTP_HOST}" pattern="^(.*)$" />
  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
  </conditions>
  <action type="Rewrite" url="index.php?s={R:1}" />
  </rule>
  </rules>
 </rewrite>
        <directoryBrowse enabled="false" />
                <security>
          <requestFiltering allowDoubleEscaping="True" />
        </security>

    </system.webServer>
    
 </configuration>


IIS6 

IIS6 是不支持web.Config的 所以你需要使用 ISAPI_Rewrite.dll 进行解析httpd.ini  那请用你的方法 将httpd.ini内容 配置到 IIS中

httpd.ini

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
RewriteRule (.*)$ /index\.php\?s=$1 [I]

如果你的空间支持 httpd.ini的话 那就在根目录中新建 httpd.ini这个文件 并写入上面的内容. 并且你需要删除根目录下的 Web.config文件


如果你的IIS使用Web.config 那你就可以直接使用 根目录提供的Web.config文件



配置完成 请回到管理员后台首页 查看服务器信息

如果提示  伪静态条件 为支持. 则可以开启伪静态

去掉?号  打开文件 /Conf/config.php 找到内容: //'REWRITE'=>1,//伪静态规则

去掉前面的 //  

改为下图所示内容

保存文件即可!

伪静态安装完毕

34 条回复   |  直到 9个月前 | 57364 次浏览

ins
发表于 2016-8-14

挺详的了..基本用的都有了

评论列表

  • 加载数据中...

编写评论内容

zhengxu110sc
发表于 2017-2-14

老大,伪静态出现这种情况怎么处理啊。QQ图片20170214111222.png

评论列表

  • 加载数据中...

编写评论内容

督军
发表于 2017-3-27


伪静态规则必须安装 不正常


评论列表

  • 加载数据中...

编写评论内容

督军
发表于 2017-3-27

主机宝CentOS6.5 不知道怎么设置

评论列表

  • 加载数据中...

编写评论内容

3105500
发表于 2017-3-27

 还有一个关于seo 优化的,301转向,有3w的域名转向无3w的,或者相反,老大也给加上去吧,我觉得这挺好的。

评论列表

  • 加载数据中...

编写评论内容

流星
发表于 2017-4-19

 评论一下

评论列表

  • 加载数据中...

编写评论内容

1790493386
发表于 2017-4-23

Apache不用文件名无法创建

评论列表

  • 加载数据中...

编写评论内容

ccdalao
发表于 2017-4-23


@jsyanglei  重新下次  从新安装

评论列表

  • 加载数据中...

编写评论内容

ou27n1dtr74j
发表于 2017-6-18

 

不可以  都改了

评论列表

  • 加载数据中...

编写评论内容

feifei520
发表于 2017-6-30

创建

评论列表

  • 加载数据中...

编写评论内容

ivampiresp
发表于 2017-7-14

老大,我是Lighttpd怎么办?


评论列表

  • 加载数据中...

编写评论内容

feifei520
发表于 2017-7-14

创建

评论列表

  • 加载数据中...

编写评论内容

nvyrzd07iqxw
发表于 2017-8-12

伪静态已经开启了 但是安装的时候还是检测未开启怎么回事儿

评论列表

  • 加载数据中...

编写评论内容

adcsomp0tsmt
发表于 2018-3-21

宝塔服务器直接配置伪静态可以么

评论列表

  • 加载数据中...

编写评论内容

weixin6cang
发表于 2018-12-3

用的是宝塔面板    nginx  在宝塔面板里配置伪静态怎么都不行

评论列表

  • 加载数据中...

编写评论内容

夜星辰
发表于 2019-1-4


评论列表

  • 加载数据中...

编写评论内容

3358838927
发表于 2019-10-5

kangle/kostool.cn这个伪静态规则怎么弄

评论列表

  • 加载数据中...

编写评论内容

t8ewvtkchfze
发表于 2019-11-27

看看看

评论列表

  • 加载数据中...

编写评论内容

akazhh
发表于 2020-2-5

我是特别服你们用手机操作的 不累么

评论列表

  • 加载数据中...

编写评论内容

xiaoma
发表于 2020-2-15

设置了 ico图标根本无法访问 怎么办?Nginx的

评论列表

  • 加载数据中...

编写评论内容

lqwniu
发表于 2020-2-16

宝塔最简单了,直接复制到宝塔里就行了


if (!-d $request_filename){
	set $rule_0 1$rule_0;
}
if (!-f $request_filename){
	set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
	rewrite ^/(.*)$ /index.php?s=$1 last;
}


评论列表

  • 加载数据中...

编写评论内容

97918811
发表于 2020-3-17

kangle主机应该用哪个围巾态

评论列表

  • 加载数据中...

编写评论内容

mxwl
发表于 2020-3-19

楼主我能把这个帖子搬走吗

我会注明出处的

看上这个帖子了 嘻嘻

评论列表

  • 加载数据中...

编写评论内容

mxwl
发表于 2020-3-19

难搞

我的这个刚好是Nginx

不知道怎么弄啊


评论列表

  • 加载数据中...

编写评论内容

gzxuhdecqz1p
发表于 2021-1-25

大佬大佬

评论列表

  • 加载数据中...

编写评论内容

gzxuhdecqz1p
发表于 2021-1-25

帮我一下啊

评论列表

  • 加载数据中...

编写评论内容

gzxuhdecqz1p
发表于 2021-1-25

emmm

评论列表

  • 加载数据中...

编写评论内容

gzxuhdecqz1p
发表于 2021-1-25

人呢

评论列表

  • 加载数据中...

编写评论内容

gzxuhdecqz1p
发表于 2021-1-25

你方便一下吗

评论列表

  • 加载数据中...

编写评论内容

lzxgjzx
发表于 2021-2-14

不会搞啊

评论列表

  • 加载数据中...

编写评论内容

cbsldf
发表于 2021-7-5

那可能是你的Apache为开启伪静态模块中的"为"字打错了,应该是"未"

评论列表

  • 加载数据中...

编写评论内容

3391272688
发表于 2022-3-19

我的支持了,而且也按照教程做了,怎么还是不行?还带着问号,谁能帮帮我

评论列表

  • 加载数据中...

编写评论内容

1101829911
发表于 2022-7-21

WEB服务器类型 kangle/server


这个怎么弄

评论列表

  • 加载数据中...

编写评论内容

2768651338
发表于 9个月前

宝塔的用户直接复制作者给的代码粘贴到网站伪静态那设置thinkphp

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容