Настройка DLE ЧПУ на nginx

05.08.2010 by Koshak Комментировать »

Для того, чтобы на DLE работали ЧПУ, вам необходимо в nginx.conf вместо зачеркнутого

location / {
root /home/allsoldhere;
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php last;
}

}

вставить этот текст

# Редиректы
rewrite ^/page/(.*)$ /index.php?cstart=$1 last;

# Сам пост
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/page,([0-9]+),([0-9]+),(.*).html (/?)+$ /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6 last;
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/page,([0-9]+),(.*).html (/?)+$ /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 last;
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/print:page,([0-9]+),(.*).html (/?)+$ /engine/print.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 last;
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/(.*).html (/?)+$ /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4 last;

rewrite ^/([^.]+)/page,([0-9]+),([0-9]+),([0-9]+) — (.*).html (/?)+$ /index.php?newsid=$4&news_page=$2&cstart=$3 last;
rewrite ^/([^.]+)/page,([0-9]+),([0-9]+) — (.*).html (/?)+$ /index.php?newsid=$3&news_page=$2 last;
rewrite ^/([^.]+)/print:page,([0-9]+),([0-9]+) — (.*).html (/?)+$ /engine/print.php?news_page=$2&newsid=$3 last;
rewrite ^/([^.]+)/([0-9]+) — (.*).html (/?)+$ /index.php?newsid=$2 last;

rewrite ^/page,([0-9]+),([0-9]+),([0-9]+) — (.*).html (/?)+$ /index.php?newsid=$3&news_page=$1&cstart=$2 last;
rewrite ^/page,([0-9]+),([0-9]+) — (.*).html (/?)+$ /index.php?newsid=$2&news_page=$1 last;
rewrite ^/print:page,([0-9]+),([0-9]+) — (.*).html (/?)+$ /engine/print.php?news_page=$1&newsid=$2 last;
rewrite ^/([0-9]+) — (.*).html (/?)+$ /index.php?newsid=$1 last;

# За день
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)(/?)+$ /index.php?year=$1&month=$2&day=$3 last;
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/page/([0-9]+)(/?)+$ /index.php?year=$1&month=$2&day=$3&cstart=$4 last;
# За весь месяц
rewrite ^/([0-9]+)/([0-9]+)(/?)+$ /index.php?year=$1&month=$2 last;
rewrite ^/([0-9]+)/([0-9]+)/page/([0-9]+)(/?)+$ /index.php?year=$1&month=$2&cstart=$3 last;
# Вывод за весь год
rewrite ^/([0-9]+)(/?)+$ /index.php?year=$1 last;
rewrite ^/([0-9]+)/page/([0-9]+)(/?)+$ /index.php?year=$1&cstart=$2 last;
# вывод отдельному тегу
rewrite ^/tags/([^/]*)(/?)+$ /index.php?do=tags&tag=$1 last;
rewrite ^/tags/([^/]*)/page/([0-9]+)(/?)+$ /index.php?do=tags&tag=$1&cstart=$2 last;
# вывод для отдельного юзера
rewrite ^/user/([^/]*)/rss.xml$ /engine/rss.php?subaction=allnews&user=$1 last;
rewrite ^/user/([^/]*)(/?)+$ /index.php?subaction=userinfo&user=$1 last;
rewrite ^/user/([^/]*)/page/([0-9]+)(/?)+$ /index.php?subaction=userinfo&user=$1&cstart=$2 last;
rewrite ^/user/([^/]*)/news (/?)+$ /index.php?subaction=allnews&user=$1 last;
rewrite ^/user/([^/]*)/news/page/([0-9]+)(/?)+$ /index.php?subaction=allnews&user=$1&cstart=$2 last;
rewrite ^/user/([^/]*)/news/rss.xml (/?)+$ /engine/rss.php?subaction=allnews&user=$1 last;
# вывод всех последних новостей
rewrite ^/lastnews/(/?)+$ /index.php?do=lastnews last;
rewrite ^/lastnews/page/([0-9]+)(/?)+$ /index.php?do=lastnews&cstart=$1 last;
# вывод в виде каталога
rewrite ^/catalog/([^/]*)(/?)+$ /index.php?catalog=$1 last;
rewrite ^/catalog/([^/]*)/page/([0-9]+)(/?)+$ /index.php?catalog=$1&cstart=$2 last;
# вывод непрочитанных статей
rewrite ^/newposts (/?)+$ /index.php?subaction=newposts last;
rewrite ^/newposts/page/([0-9]+)(/?)+$ /index.php?subaction=newposts&cstart=$1 last;
# Статистические страницы
rewrite ^/static/(.*).html (/?)+$ /index.php?do=static&page=$1 last;
# вывод избранных статей
rewrite ^/favorites (/?)+$ /index.php?do=favorites last;
rewrite ^/favorites/page/([0-9]+)(/?)+$ /index.php?do=favorites&cstart=$1 last;

rewrite ^/rules.html$ /index.php?do=rules last;
rewrite ^/statistics.html$ /index.php?do=stats last;
rewrite ^/addnews.html$ /index.php?do=addnews last;
rewrite ^/rss.xml$ /engine/rss.php last;
rewrite ^/sitemap.xml$ /uploads/sitemap.xml last;

rewrite ^/category/([^.]+)/(.*).html (/?)+$ /index.php?subaction=showfull&news_name=$2 last;
rewrite ^/category/([^.]+)/page/([0-9]+)(/?)+$ /index.php?do=cat&category=$1&cstart=$2 last;
rewrite ^/category/([^.]+)(/?)+$ /index.php?do=cat&category=$1 last;

if (!-d $request_filename) {
rewrite ^/([^.]+)/page/([0-9]+)(/?)+$ /index.php?do=cat&category=$1&cstart=$2 last;
rewrite ^/([^.]+)/?$ /index.php?do=cat&category=$1 last;
}

if (!-f $request_filename) {
rewrite ^/([^<]+)/rss.xml$ /engine/rss.php?do=cat&category=$1 last;
rewrite ^/page,([0-9]+),([^/]+).html$ /index.php?do=static&page=$2&news_page=$1 last;
rewrite ^/print:([^/]+).html$ /engine/print.php?do=static&page=$1 last;
}

if (!-f $request_filename) {
rewrite ^/([^/]+).html$ /index.php?do=static&page=$1 last;
}

 
Стало не хватать рабочего пространства? Аренда офиса , склада в Питере.

Рекомендую также:
mysql установить memcached
bat создание скриптов соединение ftp
автоматическая закачка на фтп
1с 8 2 настройка сервера
программы для linux для слежения

Реклама

6 комментариев(ия)

  1. TwiLLer, сравни дату поста и дату выхода DLE 9.3 ;)

  2. LOL!!!
    В dle 9.3 эта проблема устранена

  3. raom:

    Простите, только что перепроверил. Не ваши брал конфиги. Но пробывал поставить ваши, выдаёт ошибку при перезагрузке nginx. Темнеменее, из вашего выдернул пару строчек для тегов. Запустилось и всё работает. Благодарю.

  4. raom:

    А что делать, если на чистом nginx теги не работают? Я в этом htaccess не увидел строчек упоминающих теги. Что делать? (DLE 9.3)

  5. Можно, но только если у вас Apache. В чистом ngnix файл .htaccess не обрабатывается.

  6. Их же можно просто в файле .htaccess прописать, или я не прав?

Оставить комментарий