Переписать URL в PHP без htaccess - PullRequest
1 голос
/ 17 марта 2010

Сайт работает на веб-хостинге, где у нас нет доступа к файлу htaccess. Веб-сервер Apache Я хочу переписать URL. Например: оригинальный URL: www.mydomainname.com/en/piecework/piecework.php?piecework_id=11 Ожидаемый URL: piecework.mydomainname.com/en/11

Как это сделать?

Ответы [ 4 ]

2 голосов
/ 17 марта 2010

К сожалению, без доступа к htaccess или apache config, вы не сможете этого сделать. Черт побери от своего хозяина или получить новый. Большинство моих дешевых хостов предлагают mod_rewrite из моего опыта.

1 голос
/ 17 марта 2010

Этот код может быть тем, что вы ищете: Использование: phpfile.php/en/11 Примечание: не требуется mod_rewrite.

<?php

$DEFAULT_ACTION = 'badAction';

$pathInfo = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
$pathParts = explode('/', substr($pathInfo, 1));
$action = isset($pathParts[0]) ? $pathParts[0] : $DEFAULT_ACTION;

if (function_exists($action)) {
    $action($pathParts);
} else {
    badAction();
}

function badAction($parts = null)
{
    print 'The function specified is invalid.';
}


function en($parts)
{
    $name = isset($parts[1]) ? $parts[1] : 'undefined';
    $xml = new SimpleXMLElement('<message>Number: ' . $name . ' </message>');
    header('Content_Type: text/xml');
    print $xml->asXML();
}


?>

пс. Я нашел код в 'Профессиональный PHP6' ISBN: 978-0-470-39509-7

1 голос
/ 17 марта 2010

Я видел, как люди токенизировали строку запроса, чтобы выполнить (вроде) то, о чем вы говорите, т.е.

domain.com/foo/bar/11

На самом деле интерпретируется как:

domain.com/foo/bar/11.php?action=foo&query=bar

Однако вы должны создать эту семантику в физической структуре каталогов. Это некрасиво, неуправляемо управлять и намного легче сделать с помощью mod_rewrite.

У вас , вероятно, включен mod_rewrite, вот краткое руководство , с которого можно начать.

0 голосов
/ 17 марта 2010

На самом деле вы можете физически создавать папки / файлы (таким образом, путь, к которому осуществляется доступ, фактически физически существует), а затем перенаправлять / обрабатывать соответствующим образом - громоздко, но если это ваш единственный выбор ....

Другая возможность - увидеть, разрешит ли ваш хост, по крайней мере, пользовательский документ об ошибке 404, а затем обработать все, что там есть, на основе REDIRECT_URL.

...