一、简述
Rewirte主要的功能就是实现URL的跳转。之所以要把URL伪静态化,是因为有利于SEO(搜索引擎的优化),有利于搜索引擎的抓取,提交网站的排名。
Apache Rewrite的实现有2种方式,一种是基于服务器级的(httpd.conf),另外一种是基于目录级的(.htaccess)。
二、配置
无论基于哪种方式,要想实现URL重写,都必须开启Apache的mod_rewrite.so模块。
打开Apache目录下的配置文件 httpd.conf,找到下面这一行
#LoadModule rewrite_module modules/mod_rewrite.so
把前面的#号去掉。
1.基于httpd.conf
如果你设置了虚拟主机,可以按照下面的例子添加相应的 IfModule 片段,当然URL重写规则你要自己写。最后记得重启Apache。
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.hleclerc-PC.ingenidev
DocumentRoot "D:/wamp/bin/apache/Apache2.2.17/htdocs/blogger"
ErrorLog "logs/blogger.com-error.log"
CustomLog "logs/blogger.com-access.log" common
ServerName blogger.com
<Directory "D:/wamp/bin/apache/Apache2.2.17/htdocs/blogger">
Options Indexes FollowSymLinks
AllowOverride all
Order deny,allow
allow from all
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine On
# Blog
RewriteRule ^/blog_([0-9]+)_home\.html$ /blog/index.php?blogid=$1 [L]
RewriteRule ^/blog_([0-9]+)_list\.html$ /blog/blog.php?blogid=$1 [L]
RewriteRule ^/blog_([0-9]+)_([0-9]+)_list\.html$ /blog/blog.php?blogid=$1&page=$2 [L]
RewriteRule ^/blog_show_([0-9]+)\.html$ /blog/blog_show.php?id=$1 [L]
RewriteRule ^/blog_([0-9]+)_photo\.html$ /blog/photo.php?blogid=$1 [L]
RewriteRule ^/blog_([0-9]+)_([0-9]+)_photo\.html$ /blog/photo.php?blogid=$1&page=$2 [L]
RewriteRule ^/blog_albums_([0-9]+)\.html$ /blog/photo_albums_show.php?id=$1 [L]
RewriteRule ^/blog_p_([0-9]+)\.html$ /blog/photo_show.php?id=$1 [L]
RewriteRule ^/blog_([0-9]+)_myfriends\.html$ /blog/myfriends.php?blogid=$1 [L]
RewriteRule ^/blog_([0-9]+)_([0-9]+)_myfriends\.html$ /blog/myfriends.php?blogid=$1&page=$2 [L]
RewriteRule ^/blog_([0-9]+)_messages\.html$ /blog/messages.php?blogid=$1 [L]
RewriteRule ^/blog_([0-9]+)_([0-9]+)_messages\.html$ /blog/messages.php?blogid=$1&page=$2 [L]
RewriteRule ^/blog_([0-9]+)_b_([0-9]+)\.html$ /blog/messages.php?blogid=$1 [L]
</IfModule>
</VirtualHost>
2.基于.htaccess
(1)首先要在你网站的根目录下,建立一个 .htaccess 命名的文件。
(2)确认你Apache的配置是否已经支持了 .htaccess 的重写
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.hleclerc-PC.ingenidev
DocumentRoot "D:/wamp/bin/apache/Apache2.2.17/htdocs/blogger"
ErrorLog "logs/
blogger.com-error.log"
CustomLog "logs/
blogger.com-access.log" common
ServerName
blogger.com
<Directory "D:/wamp/bin/apache/Apache2.2.17/htdocs/blogger">
Options Indexes FollowSymLinks #下面4行代码就是是否启用.htaccess
AllowOverride all
Order deny,allow
allow from all
</Directory>
</VirtualHost>
(3)最后记得重启Apache
(4).htaccess 文件里面的内容跟 httpd.conf 文件里的内容稍微有点不同,以上面的代码为例子,主要就是每个 URL 前面都少了一个 / 。 .htaccess 方式有一个好处就是每次修改的 URL 规则如果要生效,不必重启 Apache。
(4).htaccess 文件里面的内容跟 httpd.conf 文件里的内容稍微有点不同,以上面的代码为例子,主要就是每个 URL 前面都少了一个 / 。 .htaccess 方式有一个好处就是每次修改的 URL 规则如果要生效,不必重启 Apache。
RewriteEngine On
# Blog
RewriteRule ^blog_([0-9]+)_home\.html$ blog/index.php?blogid=$1 [L]
RewriteRule ^blog_([0-9]+)_list\.html$ blog/blog.php?blogid=$1 [L]
RewriteRule ^blog_([0-9]+)_([0-9]+)_list\.html$ blog/blog.php?blogid=$1&page=$2 [L]
RewriteRule ^blog_show_([0-9]+)\.html$ blog/blog_show.php?id=$1 [L]
三、有用的资源
关于上面 Rewirte 的各种语法你可以参考下面的几个链接,都有详细的介绍,通俗易懂,这里不做讲解。
没有评论:
发表评论