Делимся секретами создания сайтов

Правильный URL

Бывают урлы вроде:
www.mysite.ru/events.php - Это банально
Бывают такие:
www.mysite.ru/?page=news&act=add - Все страницы обрабатываются обрабатываются в одном скрипте, но в адресе много мусора
ибывает лучший вариант:
www.mysite.ru/news/add/
Подход к его реализации нетривиален, и лчно я знаю только один (плохой) способ, как это сделать. Через ErrorDocument 404 /index.php и дальше анализ $_SERVER["REQUEST_URI"].
Информации о том, как это сделать правильно нигде инете не нашел. Если вы расскажете нубу, что делать, или поделитесь ссылкой, я буду очень благодарен. Спасибо :)

Ответы: 18 → “Правильный URL”

  1. Бес Андрей Ответить

    Читай про ModRewrite. через rewriteEngine это делается.

  2. Дмитрий Медведев Ответить

    юзай .htaccess
    яндексом или гуглом очень быстро находится нужная инфа

  3. Арчи Шаги Ответить

    Это делается при помощи ModRewrite и .htaccess

    http://wm-help.net/my-articles/article/mod_rewrite1.htm
    http://wm-help.net/my-articles/article/mod_rewrite2.htm

  4. Денис Якушев Ответить

    ну вообщем тебе суть уже ответили
    а вообще даже строку могу подсказать в файле .htaccess какую написать ;-)
    вот тебе пример (но не единственный способ реализации)
    RewriteEngine On
    RewriteRule([^/].*)index.php?alias=1&request=$1

  5. Плиско Вячеслав Ответить

    RewriteEngine on
    RewriteRule !(^public/) index.php
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    ————————–
    В папке public лежит всё, что не нужно реврайтить
    в индексном файле идёт анализ$_SERVER["REQUEST_URI"]

  6. Артур Валеев Ответить

    зайди сюда:
    http://www.mod-rewrite-wizard.com/

  7. Арчи Шаги Ответить

    >зайди сюда:
    http://www.mod-rewrite-wizard.com/

    Охуенная вещь ) Спасибо ;)

  8. Alexandr Arutyunov Ответить

    Плиско AmdY Вячеслав,
    хехе, я использую в точности такой же реврайт ))

    кстати при таком реврайте и правильной реализации анализа реквеста приложение становится абс независимым от наличия ModRewrite (ну мало ли)
    в случаях его отстутсвия просто будет index.php/path/path/?get=

  9. Плиско Вячеслав Ответить

    Угу, мона юзать и без реврайта.
    Не люблю множественные правила в .htacces и с помощью РНР роутинг делать удобнее и гибче.
    А через ErrorDocument способ не плохой, он позволяет делать вещи типо http://blog.my/…. , http://amdy.blog.my/...
    есть ещё возможность делать чпу через мультивью а апаче, но он мне не нравится и не разу не использовал.

  10. Бес Андрей Ответить

    только без rewrite у тебя пост-запросы проходить не будут.

  11. Плиско Вячеслав Ответить

    это с чего бы?

  12. Alexandr Arutyunov Ответить

    гы, Бес ляпнул.
    var.domain.com делается настройкой днс. чтоб все запросы шли на domain.com, а потом уже в пхп (да и любом другом языке) адрес парсится и получается эта самая переменная var …

  13. Бес Андрей Ответить

    да я не про домены, а к тому, что через errorDocument post-запросы не идут.

  14. Плиско Вячеслав Ответить

    а, слышал про такую проблему, но она решается.
    чёрт, я конфиг того апача куда-то засунул, найти не могу :( , можно погуглить чтобы найти решение

  15. Бес Андрей Ответить

    Проблема в том, что серверу НЕЧЕМ обрабатывать POST-запрос, т.к. он возвращает 404 ошибку. Типа файла нет, твои запросы обрабатывать нечем.

    Не в каждом случае хостер тебе разрешит править конфиг апача. А я бы решил проблему так (тока што придумал):
    Если урлы обрабатываются через errorDocument, то все формы с post обрабатываются через ajax, который лежит, скажем, в /ajax.php. пользователю на это начхать, он урла нигде не увидит, если копать не будет. если при выполнении пост-запроса нам необходимо перезагрузить страницу, то при возвращении из ajax.php результата делаем document.location.href = document.location.href;

    имхо, вполне позволительно, если:
    а) в лом копаться в rewriteEngine или оно не установлено
    б) не дают пофиксить конфиг от апача.

  16. Бес Андрей Ответить

    но хз как на счет индексации – не проверял. индексируют ли поисковики страницы, которые идут с заголовком 404 Not Found.

  17. Плиско Вячеслав Ответить

    ну так user.domain.com делается на серверах, где можно править конфиг апача, а чаще на нём крутится лишь один проект.
    а ajax запрос посылаентся только на на тот же домен, я на этом обжёгся однажды :(

  18. Бес Андрей Ответить

    а разве нельзя делать Запрос на урл типа http://other.site.org/someajaxprocessor.php?

Ответить