URL переписывает с php? - PullRequest
       8

URL переписывает с php?

0 голосов
/ 07 декабря 2010

Хорошо, скажем, мне нужно использовать SEO URL.Как я могу управлять следующим шаблоном:

www.mysite.com/{context}/{mode}/

Это позволяет получить переменные, объявленные следующим образом:

www.mysite.com/{context}/{mode}/{var}/{val}/{var2}/{val2}...

Например:

www.mysite.com/user/view/id/123

?

Решение ?, Как это сделать?

Возможное решение может быть следующим: Все URL-адреса перенаправляются на www.mysite.com/index.php.В файле index.php я делю URL-адрес на $u = explode($ulr, '/');: игнорируем $u[0] и рассматриваем $u[1] в качестве контекста, $u[2] в качестве режима и возможное $u[3], $u[4]... в качестве пар значений var, таких как get system index.php?var=val.Зная контекст и режим, правильный файл включен, и все будут довольны.

  • Как я могу получить URL (es: www.mysite.com/user/view/id/123) илитолько последняя часть (es: user / view / id / 123)?
  • Есть ли у этой системы какие-либо минусы?

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010

Взгляните на мой принятый ответ по этому вопросу здесь:

Имитация структуры файла с помощью PHP

0 голосов
/ 07 декабря 2010

Я использовал следующее решение:

.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    #Rewrite the URI if there is no file or folder
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

url_manager (только для корневых файлов: www.mysite.com/index.php;чтобы использовать его внутри папки (www.mysite.php / folder / index.php), добавьте +1 к каждому цифровому ключу и к $ i)

function urlFile()
{
    $url = explode('/', $_SERVER["REQUEST_URI"]);
    $context = $url[1];
    $mode = $url[2];
    return "{$context}_{$mode}.php";
}

function get($string)
{
    $url = explode('/', $_SERVER["REQUEST_URI"]);
    unset($url[0], $url[1], $url[2]);

    $i = 3;
    foreach ($url as $u)
    {
        $get[$url[$i]] = $url[$i + 1];
    }

    return $get[$string];
}
...