.htaccess& PHP - 在GET数据中允许//

时间:2014-05-19 15:17:20

标签: php apache .htaccess mod-rewrite

如果您打算-1这个问题,请告诉我如何改进它,而不是仅仅离开它。

这是一个带有一些编辑的副本

我正在制作一个开源软件,但我的.htaccess需要一点调整。

如何在我的PHP代码中抓取www.mydomain.net/forum/method/user//abc等URL并保留//

我看过这里:allow slash in url .htaccess

但那没有用。

这就是我所拥有的:

的.htaccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?/=$1 [NC,QSA,L,NE]

geturl.php

$url = (isset($_GET['/']) ? $_GET['/'] : null);
die($url);

输出:account/signup/2/sskssks

网址:account/signup/2//sskssks

预期输出:account/signup/2//sskssks

基本上,有些东西正在移除/修剪//并将其设置为/.

1 个答案:

答案 0 :(得分:2)

Section 3 of RFC 3986涵盖统一资源标识符(URI)中路径组件的通用语法。

  path          = path-abempty    ; begins with "/" or is empty
                / path-absolute   ; begins with "/" but not "//"
                / path-noscheme   ; begins with a non-colon segment
                / path-rootless   ; begins with a segment
                / path-empty      ; zero characters

  path-abempty  = *( "/" segment )
  path-absolute = "/" [ segment-nz *( "/" segment ) ]
  path-noscheme = segment-nz-nc *( "/" segment )
  path-rootless = segment-nz *( "/" segment )
  path-empty    = 0<pchar>
  segment       = *pchar
  segment-nz    = 1*pchar
  segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
                ; non-zero-length segment without any colon ":"

  pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"

定义segment-nz的行表示路径中的各个细分受众群,即/aaa/bbb/ccc(&#39; aaa&#39;,&#39; bbb&#39;和&#39; ccc& #39;是每个段),不能为空。它们必须包含至少一(1)pchar。有一些特殊情况可以开始一个root和空(/)并且只是空的绝对路径,还有一些在讨论Web URL时很少遇到的其他路径。

您的URI路径正在规范化,从您的路径中删除额外的/。如果斜杠很重要,则需要使用percent encoding将其作为数据发送。