修改官方ISAPI_Rewrite伪静态规则的BUG

2016-07-07 15:45 来源:www.chinab4c.com 作者:ecshop专家

此方法仅适用于IIS,原官方的ISAPI_Rewrite 配置规则为:
  1. [ISAPI_Rewrite]
  2. # 为了确保重写规则不影响服务器上的其他站点
  3. # 请将下面的语句前的#号去掉,并将(?:www\.)?site1\.com改为商店所在域名
  4. RewriteCond %{HTTP:Host} (?:www\.)?ppllw\.com.cn

  5. RewriteRule ^(.*)/index.html$ $1/index\.php [I]
  6. RewriteRule ^(.*)/category$$1/index\.php [I]
  7. RewriteRule ^(.*)/feed-c([0-9]+).xml$$1/feed\.php\?cat=$2 [I]
  8. RewriteRule ^(.*)/feed-b([0-9]+).xml$$1/feed\.php\?brand=$2[I]
  9. RewriteRule ^(.*)/feed.xml$$1/feed\.php[I]
  10. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$$1/category\.php\?id=$2&brand=$3&price_min=$4&price_max=$5&filter_attr=$6&page=$7&sort=$8&order=$9 [I]
  11. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)\.html$ $1/category\.php\?id=$2&brand=$3&price_min=$4&price_max=$5&filter_attr=$6[I]
  12. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$$1/category\.php\?id=$2&brand=$3&page=$4&sort=$5&order=$6[I]
  13. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$$1/category\.php\?id=$2&brand=$3&page=$4[I]
  14. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)(.*)\.html$$1/category\.php\?id=$2&brand=$3 [I]
  15. RewriteRule ^(.*)/category-([0-9]+)(.*)\.html$ $1/category\.php\?id=$2[I]
  16. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)\.html(.*)$$1/category\.php\?$4&id=$2&brand=$3
  17. RewriteRule ^(.*)/goods-([0-9]+)(.*)\.html$ $1/goods\.php\?id=$2[I]
  18. RewriteRule ^(.*)/article_cat-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$$1/article_cat\.php\?id=$2&page=$3&sort=$4&order=$5[I]
  19. RewriteRule ^(.*)/article_cat-([0-9]+)-([0-9]+)(.*)\.html$ $1/article_cat\.php\?id=$2&page=$3 [I]
  20. RewriteRule ^(.*)/article_cat-([0-9]+)(.*)\.html$ $1/article_cat\.php\?id=$2[I]
  21. RewriteRule ^(.*)/article-([0-9]+)(.*)\.html$$1/article\.php\?id=$2 [I]
  22. RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)\.html$1/brand\.php\?id=$2&cat=$3&page=$4&sort=$5&order=$6 [I]
  23. RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)-([0-9]+)(.*)\.html $1/brand\.php\?id=$2&cat=$3&page=$4[I]
  24. RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)\.html(.*)$$1/brand\.php\?$4&id=$2&cat=$3[I]
  25. RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)(.*)\.html $1/brand\.php\?id=$2&cat=$3[I]
  26. RewriteRule ^(.*)/brand-([0-9]+)(.*)\.html$1/brand\.php\?id=$2[I]
  27. RewriteRule ^(.*)/tag-(.*)\.html$1/search\.php\?keywords=$2[I]
  28. RewriteRule ^(.*)/snatch-([0-9]+)\.html$ $1/snatch\.php\?id=$2[I]
  29. RewriteRule ^(.*)/group_buy-([0-9]+)\.html$ $1/group_buy\.php\?act=view&id=$2[I]
  30. RewriteRule ^(.*)/auction-([0-9]+)\.html$$1/auction\.php\?act=view&id=$2 [I]
  31. RewriteRule ^(.*)/exchange-id([0-9]+)(.*)\.html$$1/exchange\.php\?id=$2&act=view[I]
  32. RewriteRule ^(.*)/exchange-([0-9]+)-min([0-9]+)-max([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2&integral_min=$3&integral_max=$4&page=$5&sort=$6&order=$7 [I]
  33. RewriteRule ^(.*)/exchange-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2&page=$3&sort=$4&order=$5 [I]
  34. RewriteRule ^(.*)/exchange-([0-9]+)-([0-9]+)(.*)\.html$$1/exchange\.php\?cat_id=$2&page=$3[I]
  35. RewriteRule ^(.*)/exchange-([0-9]+)(.*)\.html$$1/exchange\.php\?cat_id=$2[I]
复制代码
按照这个配置,如果服务器上还有其它域名的网站,那么访问的时候就不能用index.html来访问了,而只能用域名或者目录不包含index.html就行,出问题的情况见贴子:http://bbs.ecshop.com/thread-64800-1-1.html

现在修改了ISAPI_Rewrite规则,测试一切正常,规则如下:
  1. [ISAPI_Rewrite]
  2. # 为了确保重写规则不影响服务器上的其他站点
  3. # 请将下面的语句前的#号去掉,并将(?:www\.)?site1\.com改为商店所在域名
  4. RewriteCond Host: (?:www)\.ppllw\.com.cn

  5. RewriteRule ^(.*)/index.html$ $1/index\.php [I]
  6. RewriteRule ^(.*)/category$$1/index\.php [I]
  7. RewriteRule ^(.*)/feed-c([0-9]+).xml$$1/feed\.php\?cat=$2 [I]
  8. RewriteRule ^(.*)/feed-b([0-9]+).xml$$1/feed\.php\?brand=$2[I]
  9. RewriteRule ^(.*)/feed.xml$$1/feed\.php[I]
  10. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$$1/category\.php\?id=$2&brand=$3&price_min=$4&price_max=$5&filter_attr=$6&page=$7&sort=$8&order=$9 [I]
  11. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)\.html$ $1/category\.php\?id=$2&brand=$3&price_min=$4&price_max=$5&filter_attr=$6[I]
  12. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$$1/category\.php\?id=$2&brand=$3&page=$4&sort=$5&order=$6[I]
  13. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$$1/category\.php\?id=$2&brand=$3&page=$4[I]
  14. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)(.*)\.html$$1/category\.php\?id=$2&brand=$3 [I]
  15. RewriteRule ^(.*)/category-([0-9]+)(.*)\.html$ $1/category\.php\?id=$2[I]
  16. RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)\.html(.*)$$1/category\.php\?$4&id=$2&brand=$3
  17. RewriteRule ^(.*)/goods-([0-9]+)(.*)\.html$ $1/goods\.php\?id=$2[I]
  18. RewriteRule ^(.*)/article_cat-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$$1/article_cat\.php\?id=$2&page=$3&sort=$4&order=$5[I]
  19. RewriteRule ^(.*)/article_cat-([0-9]+)-([0-9]+)(.*)\.html$ $1/article_cat\.php\?id=$2&page=$3 [I]
  20. RewriteRule ^(.*)/article_cat-([0-9]+)(.*)\.html$ $1/article_cat\.php\?id=$2[I]
  21. RewriteRule ^(.*)/article-([0-9]+)(.*)\.html$$1/article\.php\?id=$2 [I]
  22. RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)\.html$1/brand\.php\?id=$2&cat=$3&page=$4&sort=$5&order=$6 [I]
  23. RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)-([0-9]+)(.*)\.html $1/brand\.php\?id=$2&cat=$3&page=$4[I]
  24. RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)\.html(.*)$$1/brand\.php\?$4&id=$2&cat=$3[I]
  25. RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)(.*)\.html $1/brand\.php\?id=$2&cat=$3[I]
  26. RewriteRule ^(.*)/brand-([0-9]+)(.*)\.html$1/brand\.php\?id=$2[I]
  27. RewriteRule ^(.*)/tag-(.*)\.html$1/search\.php\?keywords=$2[I]
  28. RewriteRule ^(.*)/snatch-([0-9]+)\.html$ $1/snatch\.php\?id=$2[I]
  29. RewriteRule ^(.*)/group_buy-([0-9]+)\.html$ $1/group_buy\.php\?act=view&id=$2[I]
  30. RewriteRule ^(.*)/auction-([0-9]+)\.html$$1/auction\.php\?act=view&id=$2 [I]
  31. RewriteRule ^(.*)/exchange-id([0-9]+)(.*)\.html$$1/exchange\.php\?id=$2&act=view[I]
  32. RewriteRule ^(.*)/exchange-([0-9]+)-min([0-9]+)-max([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2&integral_min=$3&integral_max=$4&page=$5&sort=$6&order=$7 [I]
  33. RewriteRule ^(.*)/exchange-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2&page=$3&sort=$4&order=$5 [I]
  34. RewriteRule ^(.*)/exchange-([0-9]+)-([0-9]+)(.*)\.html$$1/exchange\.php\?cat_id=$2&page=$3[I]
  35. RewriteRule ^(.*)/exchange-([0-9]+)(.*)\.html$$1/exchange\.php\?cat_id=$2[I]
复制代码
也就是将原官方规则的:RewriteCond %{HTTP:Host} (?:www\.)?ppllw\.com.cn

修改为:RewriteCond Host: (?:www)\.ppllw\.com.cn

回答:
支持原创,回头我测试一下。

产品列表页点了下一页后,在选择按价格...排序就会页面无法显示!!

回头研究一下

好像还是不行,用不了。

产品列表页点了下一页后,在选择按价格...排序就会页面无法显示!!
cnopus 发表于 2009-4-12 16:02


但是我的一切正常啊,我按照你说的测试了一下,请看

http://www.ppllw.com.cn/brand-3-c0-2-goods_id-DESC.html?sort=shop_price&order=DESC&category=0&display=grid&brand=3&price_min=&price_max=&filter_attr=&page=2