Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....

 

Создание человекопонятных url

Автор germanarih, 08-11-2012, 18:10:54

« назад - далее »

germanarihTopic starter

Пишу сайт на php. Страницы открываются в виде page.php, если файл показывает только одну страницу, либо page.php?id=1, если много.
Хочу сделать так, чтобы site.ru/page.php в строке адреса выглядело, как site.ru/page/, a site.ru/page.php?id=1 выглядело site.ru/page/1.
Нашел способ добавления команд в .htaccess, получилась Ошибка 500.  :D
Помогите сделать корректные и красивые ЧПУ.
Заранее благодарен за ответы.
  •  


Haosame

Вот вам два способа:
Способ раз:
[spoiler]Сделал так
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]"
вроде все работает, но почему-то не работают шаблоны. То есть показывает голый текст... Почему так?
(29 Янв 13:20)rimlin
1
Потому что пути надо указывать абсолютные
Пример:
url: /product/15/
style: style/style.css
-->style: /product/15/style/style.css
Но там же его нет, правильно? Поэтому указываем путь от корня сайта:
style: /style/style.css
Обратите внимание на слэш в начале.[/spoiler]
Способ два:
[spoiler]ИМХО лучший вариант использования mod_rewrite это непосредственный парсинг REQUEST_URI в самом ядре сайта, например:

.htaccess

Options +FollowSymlinks
RewriteEngine On
# Если не файл
RewriteCond %{REQUEST_FILENAME} !-f
# Если не директория
RewriteCond %{REQUEST_FILENAME} !-d
# Запускаем index.php
RewriteRule (.*) index.php
index.php

<?php
function ParseURL_ModRewrite()
{
    //Чиста URI
    $uri=preg_replace('#[a-z0-9]+\.[a-z0-9]+$#i', '', $_SERVER['REQUEST_URI']);

    $get_reqs=explode('/', $uri, 20);

    for($i=0;$i<sizeof($get_reqs);$i++)
    {
        if($get_reqs[$i]=='' && ($i+1)==sizeof($get_reqs))
            break;

        $_GET['value'.($i-1)]=$get_reqs[$i];   
    }
}
ParseURL_ModRewrite();

//Вывод на экран всех параметров GET
print_r($_GET);
?>[/spoiler]

P.S. ИМХО гугл по запросу "красивые url" выдает еще тысяча и один способ реализации. И делает это быстрее, чем вам ответят на форуме, посвященном в большей степени SEO.
  •  


Алекс Ла-Руссо

#2
Слышал, что ЯХА очень любит ЧПУ.
Однако, сайт написан нифига не так, и имеет вид типа такого " http://aparto.com.ua/?page=Shop&g=11 "
Стоит ли к чертям перефаршировывать сайт??
Програмер говорит, что много тра*ться с этим надо. Так ли это?

germanarihTopic starter

Цитата: Haosame от 09-11-2012, 12:37:34
Вот вам два способа:
Способ раз:
[spoiler]Сделал так
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]"
вроде все работает, но почему-то не работают шаблоны. То есть показывает голый текст... Почему так?
(29 Янв 13:20)rimlin
1
Потому что пути надо указывать абсолютные
Пример:
url: /product/15/
style: style/style.css
-->style: /product/15/style/style.css
Но там же его нет, правильно? Поэтому указываем путь от корня сайта:
style: /style/style.css
Обратите внимание на слэш в начале.[/spoiler]
Способ два:
[spoiler]ИМХО лучший вариант использования mod_rewrite это непосредственный парсинг REQUEST_URI в самом ядре сайта, например:

.htaccess

Options +FollowSymlinks
RewriteEngine On
# Если не файл
RewriteCond %{REQUEST_FILENAME} !-f
# Если не директория
RewriteCond %{REQUEST_FILENAME} !-d
# Запускаем index.php
RewriteRule (.*) index.php
index.php

<?php
function ParseURL_ModRewrite()
{
    //Чиста URI
    $uri=preg_replace('#[a-z0-9]+\.[a-z0-9]+$#i', '', $_SERVER['REQUEST_URI']);

    $get_reqs=explode('/', $uri, 20);

    for($i=0;$i<sizeof($get_reqs);$i++)
    {
        if($get_reqs[$i]=='' && ($i+1)==sizeof($get_reqs))
            break;

        $_GET['value'.($i-1)]=$get_reqs[$i];   
    }
}
ParseURL_ModRewrite();

//Вывод на экран всех параметров GET
print_r($_GET);
?>[/spoiler]

P.S. ИМХО гугл по запросу "красивые url" выдает еще тысяча и один способ реализации. И делает это быстрее, чем вам ответят на форуме, посвященном в большей степени SEO.

По второму способу никаких изменений нет, только выводит на главной Array ( [value-1] => ) вверху страницы.
По первому способу вообще никаких изменений не произошло.
  •  



Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....