問題描述
我的目標是將域名后的所有內(nèi)容都變成一個字符串.就像在 mysite.com/page/page2 中一樣,會產(chǎn)生一個字符串page/page2".我可以做到,但是它開始給我?guī)韱栴},例如,當站點位于子文件夾中而不是根目錄中時,站點所在的文件夾也將包含在字符串中,如果我不使用 mod_rewrite獲得漂亮的鏈接,它還會將 index.php 添加到字符串中.
因此,我需要一兩個技巧來讓腳本了解該站點是否位于諸如 mysite.com/sitefolder/page/page2 之類的子文件夾中,并且它仍然會產(chǎn)生一個字符串
page/page2
如果站點沒有使用mod_rewrite并且url是mysite.com/sitefolder/index.php/page/page2,它仍然會產(chǎn)生一個字符串
page/page2
請記住,我在配置文件中定義了 URL 和 USE_MOD_REWRITE,所以不需要魔法.我只是不知道如何獲取該字符串.我知道我可以執(zhí)行 $_SERVER['REQUEST_URI'] 來獲取字符串,但是 index.php 仍然會在其中.如果我解釋得不夠好,我很抱歉,但感謝所有幫助.
- 解析請求uri獲取路徑
- 從字符串的末尾刪除最終的腳本名稱(例如 index.php)
刪除任何尾部斜杠
<前>$request = parse_url($_SERVER['REQUEST_URI']);$path = $request["path"];$result = rtrim(str_replace(basename($_SERVER['SCRIPT_NAME']), '', $path), '/');
編輯
$request = parse_url($_SERVER['REQUEST_URI']);$path = $request["path"];$result = trim(str_replace(basename($_SERVER['SCRIPT_NAME']), '', $path), '/');$result =explode('/', $result);$max_level = 2;而 ($max_level < count($result)) {未設(shè)置($result[0]);}$result = '/'.implode('/', $result);
My goal is to get everything after the domain name into a string. As in mysite.com/page/page2 would result in a string "page/page2". That I can do, however it starts giving me problems when, for example, the site is in a subfolder and not in root, then the folder the site is in will also be included in the string and if I'm not using mod_rewrite to get pretty links, it will also add index.php to the string.
So, I would need a trick or two to make the script understand whether or not the site is in a subfolder such as mysite.com/sitefolder/page/page2 and that it would still result in a string
page/page2
If the site doesn not use mod_rewrite and the url is mysite.com/sitefolder/index.php/page/page2, it would still result in a string
page/page2
Keep in mind that I have URL and USE_MOD_REWRITE defined in a config file, so no need for magic. I just have no idea how to go about getting that string. I know I could do $_SERVER['REQUEST_URI'] to get the string, but then index.php would still be in it. I'm sorry if I didn't explain well enough, but all help is appreciated.
- get the path by parsing the request uri
- remove eventual script name from the end of the string (e.g. index.php)
rtrim any trailing slashes
$request = parse_url($_SERVER['REQUEST_URI']); $path = $request["path"]; $result = rtrim(str_replace(basename($_SERVER['SCRIPT_NAME']), '', $path), '/');
EDIT
$request = parse_url($_SERVER['REQUEST_URI']);
$path = $request["path"];
$result = trim(str_replace(basename($_SERVER['SCRIPT_NAME']), '', $path), '/');
$result = explode('/', $result);
$max_level = 2;
while ($max_level < count($result)) {
unset($result[0]);
}
$result = '/'.implode('/', $result);
這篇關(guān)于如何將域名后的所有內(nèi)容都變成字符串的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!