好的,所以我在我的服务器上设置了URL重写(IIS 7),例如,
http://example.org/p/1234/
是真的
http://example.org/product/?product_id=1234
(使用/ product /包含能够处理查询参数的Web应用程序的索引文件)。
问题是,我想现在每个人都使用/p/1234/ url,所以我想每当有人访问/product/?product_id=1234的旧 url时发送301redirect, 但据我所知当发生URL重写时,就服务器而言,用户确实去了/product/?product_id=1234 。
虽然在浏览器的URL栏中可能会说http://example.org/p/1234/ ,当我做一个标题和CGIvariables的转储时, /p/1234/不会显示在任何variables中。
我想我的担心是,即使我能做到这一点,似乎也会让一个简单的请求变得相当复杂:
/p/1234/ /product/?product_id=1234 /p/1234/ ? ( 是 ) 否则:
/product/?product_id=1234 /p/1234/ ? ( 不 ) /p/1234/ /product/?product_id=1234 /p/1234/ ? ( 是 ) 我知道,最终一些search索引将消除旧的URL赞成301redirect指定的那些,但在那之前,似乎有很多的服务器开销。
另外,如果我确实设置了,是否有一个filter,我可以在IIS中使用这样做,或者我需要将逻辑添加到我的webapp?
请注意,我为所有这些网页设置了<link rel="canonical".../> ,但是我仍然看到旧格式显示在search结果中。