. htaccess,PHP -允许//在GET数据


.htaccess & PHP — Allow // in GET data

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

这是一个有一些编辑的dup

我正在做一个开源软件,但是我的。htaccess需要一点调整。

我如何允许一个URL,如www.mydomain.net/forum/method/user//abc和保持//时抓住它在我的PHP代码?

我已经看了这里:允许斜杠在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

URL: account/signup/2//sskssks

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

基本上,删除/修剪//并将其设置为/.

RFC 3986第3节涵盖了统一资源标识符(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 ('aaa', 'bbb'和'ccc'各为段)不能为空。它们必须包含至少一个(1)pchar。在一些特殊情况下,开始的绝对路径是根路径和空路径(/),并且完全为空,还有一些在讨论Web url时很少遇到的其他情况。

您的URI路径正在被规范化,从您的路径中剥离额外的/。如果斜杠很重要,则需要使用百分比编码将其作为数据发送。