如果你打算-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路径正在被规范化,从您的路径中剥离额外的/
。如果斜杠很重要,则需要使用百分比编码将其作为数据发送。