2014-05-19 51 views
0

如果你打算-1这个问题,告诉我怎样才能改善它,而不是仅仅离开它。.htaccess&PHP - 在GET数据中允许//

这是几个编辑

我正在做一个开放源代码的软件部分的DUP,但我的.htaccess需要一点点调整。

如何在使用我的PHP代码时允许URL如www.mydomain.net/forum/method/user//abc并保留//

我在这里看了: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

URL:account/signup/2//sskssks

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

基本上,事情是删除/修整//并将其设置为/。

+0

我认为URL中的空白部分已解决,只留下一个'/'。你为什么需要''''? – Halcyon

+0

你在这个.htaccess中有没有其他的RewriteRule?如果您从重写标志中忽略了“NE”,会发生什么情况? –

+1

'$ _SERVER [“REQUEST_URI”]'或'REDIRECT_URL'将保留原始的和非标准化的路径。为了避免低估,不要在没有进一步研究的情况下重新发布。 – mario

回答

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(“AAA”,“BBB”和“CCC”各自链段),不能为空。它们必须至少包含一个(1)pchar。有一些特殊情况是开始一个根源为空的绝对路径(/),并且只是空的,还有其他一些在讨论Web URL时很少遇到的情况。

您的URI路径为正常化,从您的路径中剥离额外的/。如果该斜杠很重要,则需要使用percent encoding将其作为数据发送。

+0

我不擅长htaccess,那么我需要哪些修改? – user3650841