日期:2014-05-16  浏览次数:20508 次

求助htaccess伪静态规则
求助htaccess伪静态规则,转IIS的httpd.ini伪静态规则
测试网站:http://www.fphs5.com/date/ 它后面的动态的参数:?date=2014-1-10
我想用伪静态实现为直接以日期显示的地址如:2014110 这样的格式!
htaccess伪静态规则为:
rewrite ^/date/$ index_date.php last;
rewrite ^/date/(.*)/$ index_date.php?date=$1 last;

请问各位高手如何转换啊,或者帮忙给写一段也可以!谢谢各位了,辛苦了!!!

------解决方案--------------------
你的格式转换貌似有点问题,比如
你的格式是2014-1-12日按你的url应该是
/date/2014112  转成 index_date.php?date=2014-1-12

但问题是2014112可以看转换成2014-1-12或2014-11-2这两种
因此没办法判断应该是哪个

如果你的是由/date/2014-1-12  转换成 index_date.php?date=2014-1-12倒是比较容易
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

你的格式转换貌似有点问题,比如
你的格式是2014-1-12日按你的url应该是
/date/2014112  转成 index_date.php?date=2014-1-12

但问题是2014112可以看转换成2014-1-12或2014-11-2这两种
因此没办法判断应该是哪个

如果你的是由/date/2014-1-12  转换成 index_date.php?date=2014-1-12倒是比较容易

现在是这样的形式:http://www.fphs5.com/date/?date=2014-1-10
我想通过IIS伪静态规则实现这样的形式:http://www.fphs5.com/date/2014110

http://www.fphs5.com/date/2014110最终跳转的依旧是http://www.fphs5.com/date/?date=2014-1-10这个页面,所以才说2014110没办法分辨出110这三个位哪个是月份哪个是日期,1月份表示1,12月份则表示为12,这个是重点,所以说,你最好把2014110这个能明显区分开哪个是月哪个日的

直接用10号之前和10日之前用01,,02,03...这样的表达呢?


试试这个

rewrite ^/date/([\d]{4})([\d]{2})([\d]{2})/$ index_date.php?date=$1-$2-$3 last;


没有严格限制年月日的匹配,不太严谨,应该能用
------解决方案--------------------
如果是http://www.fphs5.com/date/20140110最终跳转的依旧是http://www.fphs5.com/date/?date=2014-01-10
这样的话,就好处理很多了

直接可以用
^/date/((?:19
------解决方案--------------------
20)\d\d)(0[1-9]
------解决方案--------------------
1[012])(0[1-9]
------解决方案--------------------
[12][0-9]
------解决方案--------------------
3[01])/$  index_date.php?date=$1-$3-$4;

------解决方案--------------------
先将你的日期参数转化一下格式,保障月和日都是两位:date('Y-m-d', strtotime('2014-1-12'));