URL重写学习笔记
最近做一个PHP的网站。需要用到URL重写,到网站找了一些资料也没有明白是怎么回事。
下面我将基于Apache+PHP的环境
《搜索引擎优化高级编程——PHP版》(我主要通过这本书来学习的)
配置:
1、LoadModule rewrite_module modules/mod_rewrite.so 启动(将前面的#去了)
2、修改<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
</Directory>
AllowOverride none 改为 All
3、重启Apache
4、在htdocs(网站目录结构下)的目录下建立一个 .htaccess (这个在windows无法创建,可以通过DOC来创建,不过我去找了一个文件这样的文件)
示例1:
为了方便测试,我在htdocs目录下建立一个product.php的文件
<?php
echo "You have selected product #". $_GET["id"];
?>
http://localhost:8070/product.php?id=2;
Result:You have selected product #2;
如果我要实行这个效果:
http://localhost:8070/product.html
RewriteEngine on 这个要打开啊。
RewriteRule ^product/.html$ product.php?id=123
Result: You have selected product #123
http://localhost:8070/product/p123.html
RewriteRule ^product/p([0-9]*)/.html$ product.php?id=$1 [L]
Result: You have selected product #123
http://seophp.example.com/product.php?category_id=2&product_id=1 实现这样的URl
<?php
echo "You have selected product # ". $_GET["id"];
echo "You have selected product category # ". $_GET["cid"];
?>
RewriteRule ^Products/C([0-9]*)/P([0-9]*)/.html$ /product.php?category_id=$1&product_id=$2 [L]
http://localhost:8070/product/tools-c1234/tool-p123.html
RewriteRule ^product/.*-c([0-9]+)/.*-p([0-9]*)/.html$ /product.php?cid=$1&id=$2 [L]