.htaccess从参数中修剪#(哈希)符号

时间:2018-09-13 12:54:17

标签: .htaccess mod-rewrite frameworks

嘿,我正在尝试使用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)工作正常。如您所见,我不是一个好的服务器管理员,所以希望对您有所帮助。如果您需要我提供更多信息,请告诉我

1 个答案:

答案 0 :(得分:0)

该片段未由客户端发送到服务器。即#及其后的任何内容都不会成为您服务器看到的URL的一部分。

来自here

  

片段标识符在信息检索中具有特殊作用      系统作为客户端间接引用的主要形式,      允许作者明确识别现有的方面      仅由资源所有者间接提供的资源。如      这样,在特定于方案的方案中不使用片段标识符      URI的处理;相反,片段标识符是分开的      在取消引用之前从URI的其余部分开始,因此      片段本身中的识别信息被取消引用      完全由用户代理执行,而与URI方案无关。

如果要重定向包含片段部分的URL,则需要通过Javascript实现重定向客户端。