Этот сайт существует на доходы от рекламы.
Пожалуйста, выключите AdBlock.
Вернуться   Форум об интернет-маркетинге > >
Ответ
 
Опции темы
Старый 16.02.2019, 14:38   #1
Парашурама, Джай!
 
Аватар для mff
 
Регистрация: 21.02.2008
Адрес: Россия
Сообщений: 2,077
Репутация: 200323
Отправить сообщение для mff с помощью ICQ Отправить сообщение для mff с помощью Yahoo

Question Самописный сайт и ЧПУ

Друзья! Помогите пожалуйста добить ЧПУ на самописном сайте.
У меня 3 категории на сайте, это "Страны", "Жанры", "Страны и Жанры". Мне нужны ссылки вида:
Код:
https://wc.ru главная
https://wc.ru/animals/ жанр, обработчик genre.php
https://wc.ru/austria/ страна, обработчик country.php
https://wc.ru/austria/animals/ страна и жанр, обработчик country_genre.php
https://wc.ru/austria/animals/national_zapovednik.html страница со статьей , обработчик webcam.php
Пока получилось только сделать страны и страницы со статьей. Но вот уже заметил что файлы .svg стали отображаться как страница. И как быть с категорией "жанры" и "страны и жанры"? Прописал в .htaccess:
Код:
RewriteEngine On
RewriteRule ^(.*)/$ country.php?co=$1 [L]
RewriteRule ^(.*)/(.*)$ webcam.php?ge=$1&wc=$2 [L]
Не могу найти нормальную статью по работе с ЧПУ. Помогите пожалуйста. С ув.
mff вне форума   Ответить с цитированием

Реклама
Старый 16.02.2019, 15:17   #2
timo-71
Студент
 
Регистрация: 19.09.2018
Сообщений: 33
Репутация: 15890

По умолчанию Re: Самописный сайт и ЧПУ

Цитата:
Сообщение от mff Посмотреть сообщение
Друзья! Помогите пожалуйста добить ЧПУ на самописном сайте.
Пока получилось только сделать страны и страницы со статьей. Но вот уже заметил что файлы .svg стали отображаться как страница. И как быть с категорией "жанры" и "страны и жанры"?
По мне так оптимально - единая точка входа index.php и там обработать $_SERVER['REQUEST_URI']
Например завести правила для 1 сегмента урла
Код:
 
...
"rules" : {
    "usr" : {
      "class" : "usr",
      "template" : "land.twig",
      "robots" : "noindex",
      "usr":"all",
      "content_type":"text/html"
    },
    "adm_xhr" : {
      "class" : "adm",
      "template" : "",
      "robots" : "noindex",
      "usr":"admin",
      "content_type":"application/json"
    },
}
...
и в зависимости 1 сегмента от правил выполнить соотв. действие

Цитата:
Сообщение от mff Посмотреть сообщение
Друзья! Но вот уже заметил что файлы .svg стали отображаться как страница.
Код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
#Отдавать index.php  только если не файл/папка/ссылка
RewriteCond %{REQUEST_URI} !\.(png|css|js|jpg|gif|svg)$
#Не выполнять правило для урлов с такими расширениями, даже если они не -f,-d,-l  
RewriteRule ^(.+)$ /index.php [QSA]
timo-71 вне форума   Ответить с цитированием
Сказали спасибо:
mff
Старый 16.02.2019, 15:36   #3
EvGenius
Аспирант
 
Регистрация: 28.09.2003
Адрес: Севастополь
Сообщений: 236
Репутация: 35624
Социальные сети Профиль на Хабрахабре

По умолчанию Re: Самописный сайт и ЧПУ

[off]
простите, но вы все делаете не правильно :-\
если уж делать самопис, то с осознанием как все должно быть в идеале.
а в идеале nginx должен готовую статику раздавать моментально. и никаких php и уж тем более .htaccess не должно фигурировать между запросом и отдачей ответа.

с .htaccess ковыряются когда руки связаны какой-то жизненно необходимой cms, переделывать которую нет времени/возможности

делайте допустим вот все тоже самое, но чтоб скрипт этот сохранял результат отдельными файлами.
и когда надо обновить - перезапускаете регенерацию. лучше конечно не всего, а лишь части изменившейся.
[/off]
EvGenius вне форума   Ответить с цитированием
Сказали спасибо 2 пользователей:
Старый 16.02.2019, 15:51   #4
Sitealert
Слесарь-сайтосборщик
 
Регистрация: 30.09.2016
Адрес: Замкадье
Сообщений: 4,040
Репутация: 296331

По умолчанию Re: Самописный сайт и ЧПУ

mff, апач не умеет отличать страны от жанров - ему всё равно, что это, austria или animals.
Поэтому у Вас 2 варианта на выбор:

1. Делать адресацию вида
https://wc.ru/genre/animals/
https://wc.ru/country/austria/

2.Направлять запросы на index.php и там разруливать их.
__________________
Отпилю лишнее, прикручу нужное, выправлю кривое.
Вытравлю вредителей.
Sitealert вне форума   Ответить с цитированием
Сказали спасибо:
mff
Старый 16.02.2019, 16:06   #5
LEOnidUKG
『 Работаем 』
 
Аватар для LEOnidUKG
 
Регистрация: 25.11.2006
Адрес: Интернет
Сообщений: 22,106
Репутация: 1955655
Отправить сообщение для LEOnidUKG с помощью ICQ

По умолчанию Re: Самописный сайт и ЧПУ

На данный момент развития интернета, лучше всё разруливать в index.php
Это более универсальный способ, который может корректно работать даже без апатча как такового.
LEOnidUKG на форуме   Ответить с цитированием
Сказали спасибо:
mff
Старый 16.02.2019, 16:47   #6
mff
Парашурама, Джай!
 
Аватар для mff
 
Регистрация: 21.02.2008
Адрес: Россия
Сообщений: 2,077
Репутация: 200323
Отправить сообщение для mff с помощью ICQ Отправить сообщение для mff с помощью Yahoo

ТопикСтартер Re: Самописный сайт и ЧПУ

timo-71, большое вам спасибо! Прописал в htaccess ваши коды, но посему то всеравно показывает svg как страницу: http://mj2.ru/img/views.svg


EvGenius, я извиняюсь но зачем мне движок для простенького каталога веб-камер состоящего из 4 страниц и нескольких табличек в базе данных? И вообще я не любитель использовать готовые движки, модули. В них 90% не нужного и только 10% нужного. Перепиливай их потом и забудь про обновления... Максимум могу плеер какой нибудь использовать готовый.

Цитата:
Сообщение от EvGenius Посмотреть сообщение
делайте допустим вот все тоже самое, но чтоб скрипт этот сохранял результат отдельными файлами.
и когда надо обновить - перезапускаете регенерацию. лучше конечно не всего, а лишь части изменившейся.
Спасибо, но ни чего не понял Какой скрипт? Какой результат? Мне бы пример/кусок кода...

Цитата:
Сообщение от Sitealert Посмотреть сообщение
1. Делать адресацию вида
https://wc.ru/genre/animals/
https://wc.ru/country/austria/
Этот вариант ни как не подходит. Много лишнего.

Цитата:
Сообщение от Sitealert Посмотреть сообщение
2.Направлять запросы на index.php и там разруливать их.
Не могли бы посоветовать какую нибудь статью по этой тематике, написанную доступным языком?

С ув.
mff вне форума   Ответить с цитированием
Старый 16.02.2019, 17:56   #7
miketomlin
Академик
 
Регистрация: 04.12.2013
Сообщений: 1,823
Репутация: 74516

По умолчанию Re: Самописный сайт и ЧПУ

Цитата:
Сообщение от mff Посмотреть сообщение
Этот вариант ни как не подходит. Много лишнего.
Это самый вменяемый вариант из простых: есть имя коллекции/признака, есть имя элемента/значение признака.

Цитата:
Не могли бы посоветовать какую нибудь статью по этой тематике, написанную доступным языком?
Посмотрите мою статью Как сделать единую точку входа с ЧПУ? – как раз для начинающих.

---------- Добавлено 16.02.2019 в 19:15 ----------

Цитата:
Этот вариант ни как не подходит. Много лишнего.
Может вы просто не до конца поняли суть. Вас никто не заставляет добавлять к показанным адресам еще и слаг статьи. Это уже будет др. ветвь/ветви. Но в принципе можете глянуть на G-Drive. В нем можно прятать имя признака/обработчика за первым компонентом пути. Ваши два уровня поддерживаются непосредственно ядром. Правда, по-моему не оч. красиво дублирование компонентов в идентификаторах animals и animals/national_zapovednik.html. И, уже начиная со второго уровня, нужно дописывать разруливание в пределах осн. обработчика.

---------- Добавлено 16.02.2019 в 19:23 ----------

Цитата:
У меня 3 категории на сайте, это "Страны", "Жанры", "Страны и Жанры".
По-моему это два независимых признака. Гляньте демку в конце статьи Как сделать фильтрацию элементов по двум независимым признакам? Хотя это все условность. Можно наплодить и отдельные сущности "Страны и Жанры". Тогда у статей будет только одно связующее поле с категориями.

Последний раз редактировалось miketomlin; 16.02.2019 в 18:30..
miketomlin вне форума   Ответить с цитированием
Сказали спасибо:
mff
Старый 16.02.2019, 18:51   #8
Evgeni_
Дипломник
 
Регистрация: 23.03.2017
Сообщений: 71
Репутация: 1662

По умолчанию Re: Самописный сайт и ЧПУ

Цитата:
Сообщение от mff Посмотреть сообщение
И вообще я не любитель использовать готовые движки, модули. В них 90% не нужного и только 10% нужного. Перепиливай их потом и забудь про обновления
Ну перепиливай давай тогда свою самописку и то же про обновления забудь.
Evgeni_ вне форума   Ответить с цитированием
Старый 17.02.2019, 03:09   #9
mff
Парашурама, Джай!
 
Аватар для mff
 
Регистрация: 21.02.2008
Адрес: Россия
Сообщений: 2,077
Репутация: 200323
Отправить сообщение для mff с помощью ICQ Отправить сообщение для mff с помощью Yahoo

ТопикСтартер Re: Самописный сайт и ЧПУ

Цитата:
Сообщение от miketomlin Посмотреть сообщение
Посмотрите мою статью Как сделать единую точку входа с ЧПУ? – как раз для начинающих.
Коллега, большое спасибо за статейку. Немножко разобрался.
В общем я так понял, нужно делать в индексном файле единый обработчик и, как правильно сказать, роутер, то есть подгружать нужный файл php исходя из данных, полученных в URI? За одно там же проверить, есть ли такие данные в базе и если нету, выдавать ответ отличный от 200, то есть направлять на страницу 404?
С ув.
mff вне форума   Ответить с цитированием
Старый 17.02.2019, 08:24   #10
devmastery
Студент
 
Регистрация: 30.09.2018
Сообщений: 47
Репутация: 10

По умолчанию Re: Самописный сайт и ЧПУ

Зачем городить велосипеды? Давно уже написаны хорошие классы роутеров. С полноценным функционалом.
К примеру это https://github.com/bramus/router

По поводу статики выше правильно сказали, что лучше отдавать nginx. Связка апач и нжинкс показывает прекрасную скорость.

Если интересно, могу скинуть готовые конфиги для небольших проектов.

Последний раз редактировалось devmastery; 17.02.2019 в 09:06..
devmastery на форуме   Ответить с цитированием
Сказали спасибо 2 пользователей:
Ответ




Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Текущее время: 13:33. Часовой пояс GMT +3.

Регистрация Справка Календарь Поддержка Все разделы прочитаны