rewrite伪静态

这部分看着教程来,步骤很简单,但自己实践很容易出错,一开始还不知道怎么调试

后面想想可以查看apache的error log一看果然是好东西,log里面相当清楚

不过整体过程中发现修改apache的配置需要非常细心 多一个空格可能导致错误

过程如下

1,第一步要开启对应的模块

LoadModule rewrite_module modules/mod_rewrite.so

2, 开启# Virtual hosts
Include conf/extra/httpd-vhosts.conf

这样就能在httpd-vhosts.conf这个文件里面配置虚拟主机了,免得写在apache的conf里面导致比较乱

3,配置httpd-vhosts.conf

<VirtualHost *:80>

#网站的目录,记得先到c盘下面找到hosts文件  加上 127.0.0.1 www.dk.com这一句
    DocumentRoot "F:/wamp/www/test/rewrite"
    ServerName www.dk.com
 <Directory "F:/wamp/www/test/rewrite">
#允许所有,order是顺序,先执行deny的,再执行allow的 

Order deny,allow
 Allow from all

#网站的欢迎页面,进入此站点,会自动读取index.php这个文件,没有就依次找后面
 DirectoryIndex index.php index.php3 index.html index.htm
 #设置网站的错误界面404等等 都在这里
 ErrorDocument 404 /404.html
 ErrorDocument 403 /403.html

#这里本来可以直接写入一些rewrite的规则,但太多了混乱,因此和前面一样

#开启这个可以将rewrite规则写在一个叫做.htaccess的文件里面,且每次修改.htaccess不用重启apache哦
 AllowOverride All
 </Directory>
</VirtualHost>

4,配置.htaccess

#设置重写的规则

#这个if是说如果开启了重写模块,下面才生效
<IfModule rewrite_module>
RewriteEngine On
#重写规则 http://www.dk.com/show.php?id=3&num=100 show-id3-num100.html

#下面是两个例子,一个是正则 一个直接替换
RewriteRule show-id(d+)-num(d+).html show.php?id=$1&num=$2

#比如这个直接输入hello.html 系统会自动载入hello.php 以达到伪静态的目的哦
RewriteRule hello.php hello.html

#下面是伪静态的另外一个作用,防止图片盗链

#HTTP_REFERER代表访问来源,意思如果访问来源不是本网站的

RewriteCond %{HTTP_REFERER} !www.dk.com

#那么就对图片封杀,前面是正则 代表所有的jpg,后面的-F为forbidden 中间的空格严格遵循,不然会报错,但可以查看log来排错
RewriteRule .*.jpg -[F]
</IfModule>

原文地址:https://www.cnblogs.com/dk1988/p/3500094.html