Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Преобразование настрое к mod rewrite
On Sun, Jun 05, 2011 at 07:24:00AM -0400, hdcoder wrote:
> Спасибо за быстрый ответ.
>
> Движок Cotonti позволяет настраивать
> ссылки под любой вид. Ранее это
> делалось с помощью плагина, теперь
> параметры для нужных ссылок
> прописываются прямо в родной админке.
> Показанный вариант формирования
> ссылок используют далеко не все сайты
> на этом движке, но на мой взгляд он
> достаточно распространен по сравнению
> с другими. Я не изучал вопрос, но мне
> всегда казалось, что две универсальных
> строчки RewriteRule лучше, чем два и более
> десятка специально заточенных строк
> (ради более красивых ссылок).
>
> В данном варианте ссылок смысл
> достаточно простой:
>
> site.ru/forums.html
> site.ru/forums.php
>
> site.ru/list-c-catalog.html
> site.ru/list.php?c=catalog
>
> site.ru/page-al-my_best_article.html
> site.ru/page.php?al=my_best_article
>
> site.ru/forums-m-posts-q-9306.html
> site.ru/forums.php?m=posts&q=9306
>
> site.ru/page-al-text4-comments-1-ina-delete-ind-94-x-ee65d73c6b2aa4a5.html
> site.ru/page.php?al=text4&comments=1&ina=delete&ind=94&x=ee65d73c6b2aa4a5
>
> Т.е. по сути всегда просто имя файла +
> n-ое число параметров.
> Двух строчек RewriteRule для этого хватало.
Но кроме проблемы с производительностью здесь есть ещё и проблемы с
сопровождением конфигурации. По мере роста сайта появятся URL'ы,
которые не укладываются в эту "универсальную и изящную" схему.
Непременно появятся, как бы это сейчас не показалось невероятным.
И начнутся всякие
RewriteCond %{REQUEST_URI} !^(image|css|js)/
и
RewriteRule ^index.php$ $1 [L]
и прочий нечитаемый поток сознания. А читать его и, что самое неприятное,
пытаться понять, придётся при каждом изменении конфигурации. При каждом!
Я бы сделал так:
location = /forums.html {
fastcgi_pass ...
fastcgi_param SCRIPT_FILENAME /path/to/forums.php;
...
}
location /forums- {
fastcgi_pass ...
fastcgi_param SCRIPT_FILENAME /path/to/forums.php;
...
}
location /list- {
fastcgi_pass ...
fastcgi_param SCRIPT_FILENAME /path/to/list.php;
...
}
location /page- {
fastcgi_pass ...
fastcgi_param SCRIPT_FILENAME /path/to/page.php;
...
}
и уже в самом page.php, forums.php и list.php разбирал запрошенный
REQUEST_URI. Да писать больше и не так "универсально и изящно".
Но все изменения конфигурции ограничиваются простыми find или
find-and-replace в любимом редакторе с минимальным применением
интеллектуальных усилий.
--
Igor Sysoev
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|