我有一个包含零件号数据库的网站。我的经理希望能够输入:
www.site.com/products/part#
并让该页面自动转到相关页面。
现在我把URL和mod重写页面:
www.site.com/search.php?sku=xxxx
一个php srcript将$ _GET sku并进行搜索,问题是,某些部分号码中包含#和/符号,例如:
www.site.com/products/VS816UT#ABA
我可以使用mod-rewrite绕过任何斜杠,但浏览器在$ _GET可以看到它之前删除#符号。
有办法吗?
答案 0 :(得分:3)
超过散列的任何内容(#
)都不会发送到网络服务器。
如果你想解决这个问题,为什么不用斜杠附加#ABA
:
www.site.com/products/VS816UT/ABA
并使用mod_rewrite
将其正确映射到您的PHP文件。
答案 1 :(得分:1)
根据网络标准,#符号保留给浏览器内的锚标签。
答案 2 :(得分:0)
应该没有麻烦这样做,但你想要的是/ products /的一个处理程序,它获取url的尾随部分(像codeigniter这样的框架很擅长)。
您需要一个单页处理程序,根据您的需要,根据所需的url(或尽可能少)调度。
不幸的是,至少有些浏览器会删除#及其后的所有内容。我使用带有#的url进行了测试,并监控了浏览器使用tcpdump发送的内容并得到了这个:
地址:
http://127.0.0.1/onepage/products/zss#www?b=A#B
tcpdump o / p:
GET /onepage/products/zss
据推测,服务器到服务器是唯一可行的方式。