我有一个网站,用户可以在其中选择一系列字母和数字,然后将它们带到基于此的新页面。
所以可能需要他们/cds/C_1_3_A_2
目录中没有实际C_1_3_A_2
的页面cds
,我有一个重写规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^cds/(.*) /cds/index.html [L]
因此,如果请求的文件不存在,它将被重写为index.html
,其中 php 脚本获取 URL 的最后一个组件 ( C_1_3_A_2
) 并加载相关内容,如果 URL 的最后一个组件是/cds
则 PHP 脚本重定向到/cds/C_1_1_A_1
但是我想添加 AJAX 以使其更流畅,这意味着我需要添加对哈希片段的支持,因为旧版浏览器不支持 history.pushState。
所以如果用户自己去/cds/#C_1_3_A_2
,应该和/cds/C_1_3_A_2
但是由于片段没有被发送到服务器,用户最终成为 /cds/C_1_1_A_1#C_1_3_A_2
,并获得了与 相关的内容C_1_1_A_1
,而不是C_1_3_A_2
他们想要的。
由于 PHP 是服务器端,它在 Javascript 可以处理片段之前执行,我不希望用户被 PHP 脚本重定向,然后由 javascript 返回。
那么如何添加对哈希片段的支持呢?其他网站如何处理这个问题?