Laokoon的答案是正確的,但也僅在URL的"path"
部分的結尾具有後"/"
(正斜槓),如:
http://www.example.com/
http://www.example.com/folder/
你在你的問題已經描述是有一個在"query"
部分URL中跟蹤"/"
。
Parts of the URL: "http://www.example.com/index.php?arg1=val1&arg2/"
http Protocol
www.example.com Subdomain.Domain
index.php Path
?arg1=val1&arg2/ Query
在你描述的情況:"http://www.example.com/index.php?arg1=val1&arg2/"
,尾隨"/"
確實有一個意思,但也許不是,你也許會覺得礙事。
您已將您的問題標記爲php,因此我將提供一個PHP示例。在其他語言中可能會有所不同,例如"Perl"
。
有2種可能性用於在拖尾"/"
的"query"
:
1)如果尾隨"/"
遵循"="
,而不在它們之間的"&"
,那麼所述後"/"
是"key"
與相關聯的"value"
的一部分所述"="
:
"?arg1=val1/" $_GET["arg1"] => 'val1/'
"?arg1=/" $_GET["arg1"] => '/'
2)如果"/"
遵循"&"
(或"?"
)中,用在之間出"="
,那麼"/"
是"key"
的名稱的一部分。此外,如果"/"
是在最後(後),則該"key"
的"value"
將是空的:
"?arg1/=val1" $_GET["arg1/"] => 'val1'
"?arg1=val1&arg2/=val2" $_GET["arg2/"] => 'val2'
"?arg1/" $_GET["arg1/"] => ''
"?arg1=val1&arg2/" $_GET["arg2/"] => ''
如果尾隨"/"
立即遵循"&"
(或"?"
),則尾隨"/"
是一個"key"
的名稱:
"?/" $_GET["/"] => ''
"?arg1=val1&/" $_GET["/"] => ''
這裏是一個PhpFiddle例如:querytest2016-0713.php
<?php
// http://main.xfiddle.com/55edba50/querytrailingslashtest/querytest2016-0713.php
echo "querytest2016-0713.php<br>\n";
echo 'HTTP_HOST ="' . $_SERVER['HTTP_HOST'] . '"' . "<br>\n";
echo 'REQUEST_URI ="' . $_SERVER['REQUEST_URI'] . '"' . "<br>\n";
echo 'QUERY_STRING ="' . $_SERVER['QUERY_STRING'] . '"' . "<br>\n";
echo "<br>\n";
echo "Test using 'parse_url' and 'parse_str':<br>\n";
// $url = "http://www.example.com/index.php?arg1=val1&arg2/";
$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$qry = parse_url($url, PHP_URL_QUERY);
parse_str($qry);
parse_str($qry, $arr);
echo "url='" . $url . "'<br>\n";
echo "query='" . $qry . "'<br>\n";
foreach ($arr as $key => $value) {
echo $key . " => '" . $value . "'<br>\n";
}
echo "<br>\n";
echo "Test using '\$_GET':<br>\n";
foreach($_GET as $key => $value){
echo $key . " => '" . $value . "'<br />\r\n";
}
?>
輸出示例:
querytest2016-0713.php?arg1=val1&arg2/
querytest2016-0713.php
HTTP_HOST ="main.xfiddle.com"
REQUEST_URI ="/55edba50/querytrailingslashtest/querytest2016-0713.php?arg1=val1&arg2/"
QUERY_STRING ="arg1=val1&arg2/"
Test using 'parse_url' and 'parse_str':
url='http://main.xfiddle.com/55edba50/querytrailingslashtest/ ...
... querytest2016-0713.php?arg1=val1&arg2/'
query='arg1=val1&arg2/'
arg1 => 'val1'
arg2/ => ''
Test using '$_GET':
arg1 => 'val1'
arg2/ => ''
輸出示例:
querytest2016-0713.php?a=111&b=999&c=13579&arg1=901&arg2/=44&argx&whatever/=88&arg3/
querytest2016-0713.php
HTTP_HOST ="main.xfiddle.com"
REQUEST_URI ="/55edba50/querytrailingslashtest/querytest2016-0713.php?a=111&b=999&c=13579&arg1=901&arg2/=44&argx&whatever/=88&arg3/"
QUERY_STRING ="a=111&b=999&c=13579&arg1=901&arg2/=44&argx&whatever/=88&arg3/"
Test using 'parse_url' and 'parse_str':
url='http://main.xfiddle.com/55edba50/querytrailingslashtest/ ...
... querytest2016-0713.php?a=111&b=999&c=13579&arg1=901&arg2/=44&argx&whatever/=88&arg3/'
query='a=111&b=999&c=13579&arg1=901&arg2/=44&argx&whatever/=88&arg3/'
a => '111'
b => '999'
c => '13579'
arg1 => '901'
arg2/ => '44'
argx => ''
whatever/ => '88'
arg3/ => ''
Test using '$_GET':
a => '111'
b => '999'
c => '13579'
arg1 => '901'
arg2/ => '44'
argx => ''
whatever/ => '88'
arg3/ => ''
當然,如果查詢字符串是使用某種其他編碼方法在PHP中「手動」解析的,則尾部"/"
可能具有其他含義或目的,或者可能完全忽略它。
這就是「技術」含義,雖然不一定是「目錄」或「文件」,但URI的不同部分。在功能上,它們通常是相同的,除非你有一些時髦的重寫規則關注尾部斜線。 –
是的,你是對的。我寫得更清楚。 – Laokoon
拖尾的反斜槓? – Gumbo