php如何读取包括#和/符号的URL

时间:2011-12-02 20:43:24

标签: php url mod-rewrite get

我有一个包含零件号数据库的网站。我的经理希望能够输入:

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可以看到它之前删除#符号。

有办法吗?

3 个答案:

答案 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

据推测,服务器到服务器是唯一可行的方式。