Как получить все после имени домена в строку

Моя цель – получить все после имени домена в строку. Как и в mysite.com/page/page2, вы получите строку «page / page2». Это я могу сделать, однако это начинает давать мне проблемы, когда, например, сайт находится в подпапке, а не в корневом каталоге, тогда папка, в которой находится сайт, также будет включена в строку, и если я не буду использовать mod_rewrite для получите довольно ссылки, он также добавит index.php в строку.

Итак, мне понадобится трюк или два, чтобы сценарий понял, находится ли сайт в подпапке, такой как mysite.com/sitefolder/page/page2, и что она все равно приведет к строке

page/page2 

Если сайт не использует mod_rewrite, а url – mysite.com/sitefolder/index.php/page/page2, он все равно приведет к строке

 page/page2 

Имейте в виду, что у меня есть URL и USE_MOD_REWRITE, определенные в файле конфигурации, поэтому нет необходимости в магии. Я просто не знаю, как это сделать. Я знаю, что могу сделать $ _SERVER ['REQUEST_URI'], чтобы получить строку, но тогда index.php все равно будет в ней. Извините, если я не объясню достаточно хорошо, но вся помощь приветствуется.

Related of "Как получить все после имени домена в строку"

  • получить путь путем анализа запроса uri
  • удалить возможное имя скрипта из конца строки (например, index.php)
  • rtrim любые трейлинг-косые черты

     $ 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; while ($max_level < count($result)) { unset($result[0]); } $result = '/'.implode('/', $result); с $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); 

Вы можете использовать $SERVER['REQUEST_URI'] а затем изменить строку с помощью функции substr() PHP. Итак, поместите URI в переменную, а затем запустите эту функцию, чтобы удалить первое Х-число символов (длину имени домена) с начала и Х-число символов с конца (index.php = 9).

Например:

$new_url = substr($uri_variable, 10, -9);

Где $uri_variable – это $SERVER[ REQUEST_URI '] `, 10 – символ после имени домена, а -9 – символы в index.php.

http://php.net/manual/en/function.substr.php