挺详的了..基本用的都有了
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的伪静态是最简单 易用的.
直接在网站根目录下创建文件: .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一般会在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 完成
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 是不支持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,//伪静态规则
去掉前面的 //
改为下图所示内容
保存文件即可!
伪静态安装完毕
挺详的了..基本用的都有了 |
||||
zhengxu110sc# 2楼 2017-2-14 点评 老大,伪静态出现这种情况怎么处理啊。 |
||||
|
||||
主机宝CentOS6.5 不知道怎么设置 |
||||
还有一个关于seo 优化的,301转向,有3w的域名转向无3w的,或者相反,老大也给加上去吧,我觉得这挺好的。 |
||||
评论一下 |
||||
1790493386# 7楼 2017-4-23 点评 Apache不用文件名无法创建 |
||||
@jsyanglei 重新下次 从新安装 |
||||
ou27n1dtr74j# 9楼 2017-6-18 点评 不可以 都改了 |
||||
创建 |
||||
ivampiresp# 11楼 2017-7-14 点评 老大,我是Lighttpd怎么办? |
||||
创建 |
||||
nvyrzd07iqxw# 13楼 2017-8-12 点评 伪静态已经开启了 但是安装的时候还是检测未开启怎么回事儿 |
||||
adcsomp0tsmt# 14楼 2018-3-21 3 条点评 宝塔服务器直接配置伪静态可以么 |
||||
weixin6cang# 15楼 2018-12-3 点评 用的是宝塔面板 nginx 在宝塔面板里配置伪静态怎么都不行 |
||||
|
||||
3358838927# 17楼 2019-10-5 点评 kangle/kostool.cn这个伪静态规则怎么弄 |
||||
t8ewvtkchfze# 18楼 2019-11-27 点评 看看看 |
||||
我是特别服你们用手机操作的 不累么 |
||||
设置了 ico图标根本无法访问 怎么办?Nginx的 |
||||
宝塔最简单了,直接复制到宝塔里就行了 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; } |
||||
kangle主机应该用哪个围巾态 |
||||
楼主我能把这个帖子搬走吗 我会注明出处的 看上这个帖子了 嘻嘻 |
||||
难搞 我的这个刚好是Nginx 不知道怎么弄啊 |
||||
gzxuhdecqz1p# 25楼 2021-1-25 点评 大佬大佬 |
||||
gzxuhdecqz1p# 26楼 2021-1-25 点评 帮我一下啊 |
||||
gzxuhdecqz1p# 27楼 2021-1-25 点评 emmm |
||||
gzxuhdecqz1p# 28楼 2021-1-25 点评 人呢 |
||||
gzxuhdecqz1p# 29楼 2021-1-25 点评 你方便一下吗 |
||||
不会搞啊 |
||||
那可能是你的Apache为开启伪静态模块中的"为"字打错了,应该是"未" |
||||
3391272688# 32楼 2022-3-19 点评 我的支持了,而且也按照教程做了,怎么还是不行?还带着问号,谁能帮帮我 |
||||
1101829911# 33楼 2022-7-21 点评 WEB服务器类型 kangle/server 这个怎么弄 |
||||
2768651338# 34楼 2023-7-13 点评 宝塔的用户直接复制作者给的代码粘贴到网站伪静态那设置thinkphp |