先大体说一下意思:公司网站打算改版,但是一些对应的url也需要做调整,而这些url我们是通过httpd.ini配置文件来做的。
问题就来了。就是如何来保证网站改版后,之前的url能正常打开,而对之前的url重新做的重写也能正常访问,也就是说
现在一个真实的url,我用2个重写后的路径都可以访问。之前的url重写规则是这样子的:
httpd.ini配置文件里德:
RewriteRule ^/fangwu/fangwu_(\d+)\.html /fangwulist\.aspx\?flid=0&fl=1&dq=1&page=$1
这样子访问,重写后的url为/fangwu/fangwu_1.html打算改版后,url变更为:/fangwu/pn1/
也就是分页的时候,全部用目录来做,而不是之前用单页也重写了。
我现在的解决方案是:
对一个url做了2个正则来分别匹配:如下
RewriteRule ^/fangwu/fangwu_(\d+)\.html  /fangwulist\.aspx\?flid=0&fl=1&dq=1&page=$1
RewriteRule ^/\w*/\w*_(\d+)/ /fangwulist\.aspx\?flid=0&fl=1&dq=1&page=$1
但是如果这样子的话,httpd.ini配置文件的代码量会增大一倍,所以担心网页访问时的打开速度。
于是,考虑用正则的“交替选择”匹配。便有了如下的代码:
(/fangwu/fangwu_(\d+)\.html)|(/\w*/\w*_(\d+)/) 
这段代码在正则表达式测试工具里测试,匹配是没有问题的,但是放httpd.ini里却不行了,访问的时候就报错。
不清楚问题出在哪里,望指教 ~