您的位置:首页 > 运维架构 > Apache

apache 伪静态页面

2013-09-27 22:01 260 查看
首先自我介绍一下,我是一个前端人员,对于后台的知识也是知之甚少;有什么不足之处请谅解!

好了,现在我介绍一下 php怎么进行伪静态页面的实现;

我相信大家都见过这样格式的网址,你一定会好奇他们是怎么做的;
http://c/123.html http://www.rmtime.com/rm-123.html http://www.rmtime.com/rm-a-2-b-213-c-3.html
他们是怎么做到的,难道他们不用传递id或者tid等变量吗

我们知道一般的网站传递参数都是以
http://www.rmtime.com/rm.php?tid=1
这种形式来传递的,这种形式他不利于seo搜索排名;

好,废话不多说了!

步骤:

1.apache的配置 伪静态

2.新建 .htaccess

3.编写相关 伪静态 规则(简单实例)

配置apache 伪静态

首先我们找到 httpd.conf 这个文件;

举例:

C:\wamp\bin\apache\apache2.2.8\conf\httpd.conf

打开这个文件;

搜索:

#LoadModule rewrite_module modules/mod_rewrite.so

把他前面的#去掉,

接着

在httpd.conf中

找到

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#


把里面的
AllowOverride

改为All

保存

这样apache的基本配置就做好了!

下一步就是新建 .htaccess文件,把他存放在网站的根目录下;

注意:在window操作系统下是无法新建的;

解决办法:



这样就创建在网站的根目录了;

接着我们用记事本打开此.htaccess文件

粘贴这段

<IFMODULE mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule rmtime-([0-9]*).html$ rmtime.php?id=$1

</IFMODULE>

本地新建 rmtime.php

内容是:

<?php echo $_GET['id']; ?>

保存

服务方式:

localhost / rmtime-12.html

如果页面显示12那么说明实验成功!恭喜!

相关规则例子:

例子一:

原先:http:// www.rmtime.com / rmtime.php?id=123

处理后 : http:// www.rmtime.com / 123.html

规则 : RewriteRule ([0-9]+).html$ rmtime.php?id=$1 

例子二:

原先:http:// www.rmtime.com / rmtime.php?id=123

处理后 : http:// www.rmtime.com / rm-123.html

规则 : RewriteRule rm-([0-9]+).html$ rmtime.php?id=$1 

例子三:
http://www.rmtime.com /rmtime.php?a=a1&b=b1&c=c1

RewriteRule ^(.*)-htm-a-([a-z0-9\_]+)-b-([a-z0-9\_]+)-c-([a-z0-9\_]+.html)$ rmtime.php?a=&b=&c= 

规则

%{HTTP_HOST}

:

是指取得用户访问的URL的主域名 然后空格后面是一个正则表达式匹配,意识就

是说是否是 nbphp.com

RewriteRule ^(.*)$ http://www.abc.com/$1 [R=301,L]

R的含义是redirect,即重定向,该请求不会再被apache交给后端处理,而是直接

返回给浏览器进行重定向跳转。301是返回的http状态码,具体可以参考http rfc

文档,跳转都是3XX。

L是last,即最后一个rewrite规则,如果请求被此规则命中,将不会继续再向下

匹配其他规则。

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

%{REQUEST_FILENAME}  请求的文件名

!-f  不是文件或不存在

!-d  不是目录或不存在

[L] 这是最后一个匹配项,不再往下匹配

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

意思就是说将所有页面全部指向index.php上。我估计可能是某段用来静态化页面

的代码吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息