嘿,我正在尝试使用PHP从头开始构建一些MVC框架。 为此,我正在使用简单的URL方案 contorller / method / params 。我的htaccess文件如下所示:
<IfModule mod_rewrite.c>
Options -Multiviews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
</IfModule>
但是当我尝试通过 $ _ GET ['url'] 接收URL字符串时: explorer / add / c#我得到了 explorer / add / c 即使我这样编码, explorer / add / c%23 仍然什么也没得到,但 explorer / add / c%24($ -symbol)工作正常。如您所见,我不是一个好的服务器管理员,所以希望对您有所帮助。如果您需要我提供更多信息,请告诉我
答案 0 :(得分:0)
该片段未由客户端发送到服务器。即#
及其后的任何内容都不会成为您服务器看到的URL的一部分。
来自here:
片段标识符在信息检索中具有特殊作用 系统作为客户端间接引用的主要形式, 允许作者明确识别现有的方面 仅由资源所有者间接提供的资源。如 这样,在特定于方案的方案中不使用片段标识符 URI的处理;相反,片段标识符是分开的 在取消引用之前从URI的其余部分开始,因此 片段本身中的识别信息被取消引用 完全由用户代理执行,而与URI方案无关。
如果要重定向包含片段部分的URL,则需要通过Javascript实现重定向客户端。