Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с чпу

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
surin.89
Отправлено: 30 Ноября, 2020 - 14:18:16
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2020  


Помог: 0 раз(а)




RewriteEngine On

Первое правило срабатывает так как мне нужно
RewriteRule ^([a-z]+)?$ index.php?city=$1

но проблема с этим правилом
RewriteRule ^city$ magazinphe.p
при вводе city адресную строку, переход идет на индексную страницу. Файлы index.php и magazine.php лежат в одной директории.
Подскажите как настроить RewriteRule ^city$ magazinphe.p это правили?
 
 Top
miketomlin
Отправлено: 01 Декабря, 2020 - 21:17:30
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




Смысл вам помогать? Я в соседней теме вам подробно расписал, как сейчас делают ЧПУ. А вы опять подсовываете нам древность, на которую все спецы уже давно забили и забыли, что там и как. Идите на серч и т.п. Там такие вопросы до сих пор актуальны Закатив глазки

Мжет, тупо пересечение правил? Про флаг L почитайте.
(Добавление)
Некоторые сейчас используют автоматический роутинг прямо по БД:
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `site_categories` (`id`, `name`, `bits`, `module`) VALUES
  2. ('moscow', 'Москва', 16, 'index');

или
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `site_categories` (`id`, `name`, `bits`, `module`) VALUES
  2. ('city', 'Город', 19, 'magazine');
  3.  
  4. INSERT INTO `site_city` (`id`, `name`) VALUES
  5. ('moscow', 'Москва');

После в коде можно смело писать вывод $page['name'], чтобы на странице по адресу /moscow или /city/moscow увидеть «Москву»!

surin.89 пишет:
magazinphe.p
С бодуна что ль писали?

(Отредактировано автором: 01 Декабря, 2020 - 21:41:43)

 
 Top
surin.89
Отправлено: 02 Декабря, 2020 - 05:59:56
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2020  


Помог: 0 раз(а)




miketomlin пишет:
Смысл вам помогать? Я в соседней теме вам подробно расписал, как сейчас делают ЧПУ. А вы опять подсовываете нам древность, на которую все спецы уже давно забили и забыли, что там и как. Идите на серч и т.п. Там такие вопросы до сих пор актуальны Закатив глазки

Мжет, тупо пересечение правил? Про флаг L почитайте.
(Добавление)
Некоторые сейчас используют автоматический роутинг прямо по БД:
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `site_categories` (`id`, `name`, `bits`, `module`) VALUES
  2. ('moscow', 'Москва', 16, 'index');

или
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `site_categories` (`id`, `name`, `bits`, `module`) VALUES
  2. ('city', 'Город', 19, 'magazine');
  3.  
  4. INSERT INTO `site_city` (`id`, `name`) VALUES
  5. ('moscow', 'Москва');

После в коде можно смело писать вывод $page['name'], чтобы на странице по адресу /moscow или /city/moscow увидеть «Москву»!

surin.89 пишет:
magazinphe.p
С бодуна что ль писали?


Не с бодуна, торопился просто)!
Спасибо Вам. Прочитал еще раз ваше первое письмо. Вроде начало что-то складываться в голове)
Попробую создать файл-обработчик. Чтобы не мучиться с htaccess.
Я новичок в этом деле, опыта мало, так что не судите строго. Еще использую не MySQL, а Платформа Parse.
 
 Top
surin.89
Отправлено: 03 Декабря, 2020 - 14:54:17
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2020  


Помог: 0 раз(а)




surin.89 пишет:
miketomlin пишет:
Смысл вам помогать? Я в соседней теме вам подробно расписал, как сейчас делают ЧПУ. А вы опять подсовываете нам древность, на которую все спецы уже давно забили и забыли, что там и как. Идите на серч и т.п. Там такие вопросы до сих пор актуальны Закатив глазки

Мжет, тупо пересечение правил? Про флаг L почитайте.
(Добавление)
Некоторые сейчас используют автоматический роутинг прямо по БД:
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `site_categories` (`id`, `name`, `bits`, `module`) VALUES
  2. ('moscow', 'Москва', 16, 'index');

или
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `site_categories` (`id`, `name`, `bits`, `module`) VALUES
  2. ('city', 'Город', 19, 'magazine');
  3.  
  4. INSERT INTO `site_city` (`id`, `name`) VALUES
  5. ('moscow', 'Москва');

После в коде можно смело писать вывод $page['name'], чтобы на странице по адресу /moscow или /city/moscow увидеть «Москву»!

surin.89 пишет:
magazinphe.p
С бодуна что ль писали?


Не с бодуна, торопился просто)!
Спасибо Вам. Прочитал еще раз ваше первое письмо. Вроде начало что-то складываться в голове)
Попробую создать файл-обработчик. Чтобы не мучиться с htaccess.
Я новичок в этом деле, опыта мало, так что не судите строго. Еще использую не MySQL, а Платформа Parse.



Если я правильно понял, то обработчик в упрощенном варианте выглядит ,примерно, так:
Создал файл обработчик со следующим кодом. В принципе, все срабатывает, но есть одно "но". Мне не нужно, чтобы, например, после перехода на index.php или magazine.php в адресной строке не отображался сам "index.php" и "magazine.php". Подскажите как это сделать? И вообще я правильно понял про единую точку входа и двигаюсь в правильном направлении? Заранее спасибо!

<?php
$url = explode("/", $_SERVER['REQUEST_URI']);

if ($url[1] == "mag"){
header('Location: magazine.php/'.$url[2].'/.$url[3].'');
exit;
}else{
header('Location: index.php/'.$url[1].'');
exit;
}

?>
 
 Top
miketomlin
Отправлено: 04 Декабря, 2020 - 14:25:58
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




surin.89 пишет:
В принципе, все срабатывает, но есть одно "но". Мне не нужно, чтобы, например, после перехода на index.php или magazine.php в адресной строке не отображался сам "index.php" и "magazine.php".
А в стартовом посте было нужно ;)

surin.89 пишет:
И вообще я правильно понял про единую точку входа и двигаюсь в правильном направлении?
Location – это внешний редирект! А мы пока что говорили только о внутреннем! В моей статье внешний редирект используется для автоматической коррекции тайпин-адресов, т.е. похожих по написанию. Вы сначала с основой разберитесь, а потом уже будете доп. плюшки прикручивать.

Осн. смысл единой точки входа – делать в ней все то, что вы в стартовом посте пытались делать в конфиге сервера (т.е. роутинг), и даже больше. Роутинг подразумевает подключение (файлов) частных обработчиков, а не внешний редирект по адресам с их именами. Если вы по слагу mag просто подключите (include/require) файл magazine.php, в нем будут доступны переменные $url[2], $url[3], если соответствующие компоненты пути существуют. Если не существуют, то при обращении к этим переменным будет возникать ошибка. Прежде чем что-то использовать в коде, нужно проверять доступность этого, например можно проверить кол-во (count) элементов в $url ;)
(Добавление)
И сразу предостерегаю от кучи блоков вроде

Даже на таком начальном уровне можно оптимизировать код. Почитайте мои ответы про массив $routes и т.п. тут: http://phpforum[dot]su/index.php?showtopic=94970
 
 Top
surin.89
Отправлено: 07 Декабря, 2020 - 14:32:34
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2020  


Помог: 0 раз(а)




[quote=miketomlin][/quote]
miketomlin пишет:
surin.89 пишет:
В принципе, все срабатывает, но есть одно "но". Мне не нужно, чтобы, например, после перехода на index.php или magazine.php в адресной строке не отображался сам "index.php" и "magazine.php".
А в стартовом посте было нужно ;)

surin.89 пишет:
И вообще я правильно понял про единую точку входа и двигаюсь в правильном направлении?
Location – это внешний редирект! А мы пока что говорили только о внутреннем! В моей статье внешний редирект используется для автоматической коррекции тайпин-адресов, т.е. похожих по написанию. Вы сначала с основой разберитесь, а потом уже будете доп. плюшки прикручивать.

Осн. смысл единой точки входа – делать в ней все то, что вы в стартовом посте пытались делать в конфиге сервера (т.е. роутинг), и даже больше. Роутинг подразумевает подключение (файлов) частных обработчиков, а не внешний редирект по адресам с их именами. Если вы по слагу mag просто подключите (include/require) файл magazine.php, в нем будут доступны переменные $url[2], $url[3], если соответствующие компоненты пути существуют. Если не существуют, то при обращении к этим переменным будет возникать ошибка. Прежде чем что-то использовать в коде, нужно проверять доступность этого, например можно проверить кол-во (count) элементов в $url ;)
(Добавление)
И сразу предостерегаю от кучи блоков вроде

Даже на таком начальном уровне можно оптимизировать код. Почитайте мои ответы про массив $routes и т.п. тут: http://phpforum.su/index.php?showtopic=94970


, а чем плох этот блок?
 
 Top
miketomlin
Отправлено: 08 Декабря, 2020 - 19:04:28
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




surin.89 пишет:
а чем плох этот блок?
Тем, что многие норовят потом нашлепать кучу подобных!

ЧЁ-то вы никак не можете подружиться с цитированием. Опять куда-то торопитесь?

Выделили цитируемый фрагмент, нажали кнопку «Цитата». Все.
 
 Top
DlTA
Отправлено: 09 Декабря, 2020 - 13:49:47
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




про чпу нужно знать что поисковик не любит
1) многократный переброс делать плохо
2) привести строки к нужному регистру (/Аи или /аИ это разные страницы)
3) при переходе на ссылку /Аи нужно делать 301 с переходом на /аи и помним про правило 1
4) если ссылки нету то нужно выдавать 404
 
 Top
miketomlin
Отправлено: 09 Декабря, 2020 - 14:09:52
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




DlTA пишет:
про чпу нужно знать что поисковик не любит
В этой теме речь прежде всего о реализации Подмигивание

DlTA пишет:
1) многократный переброс делать плохо
До 3 вкл. норм. Но в общем, да, чем меньше, тем лучше.

DlTA пишет:
2) привести строки к нужному регистру (/Аи или /аИ это разные страницы)
3) при переходе на ссылку /Аи нужно делать 301 с переходом на /аи и помним про правило 1
Так привести к нужному или понижать? Растерялся Тут надо выбрать один из вариантов Подмигивание
(Добавление)
Кириллицу в адресах сложнее обрабатывать (приводить к нужному регистру, понижать регистр), поэтому ее лучше совсем не использовать.

Что касается фильтров коррекции адреса, вот пример:
www[dot]g09[dot]ru///Articles///My-First-Article///

По идее должно быть два редиректа. Один фильтр на уровне Web-сервера для коррекции имени хоста (отбрасывания www.) и избавления от трэйлинг-слешей. Другой для понижения регистра и избавления от оставшихся множественных слешей. Простой вариант его реализации показан в статье по ссылке из соседней темы.
(Добавление)
Редиректы форума прошу не учитывать Радость
 
 Top
DlTA
Отправлено: 09 Декабря, 2020 - 16:07:47
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




miketomlin пишет:
До 3 вкл. норм. Но в общем, да, чем меньше, тем лучше.

НЕТ
гугл возмущается, яндекс возмущается. поэтому только 1 переход
 
 Top
miketomlin
Отправлено: 10 Декабря, 2020 - 08:04:19
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




DlTA пишет:
гугл возмущается, яндекс возмущается.
Это другое. И тема вообще не про редиректы. Хорош оффтопить.
(Добавление)
P.S. Для яши с гошей и делают только один. А если ты кардинально меняешь адресацию, например переезжаешь на др. домен и одновременно с этим меняешь внутр. адресацию (чего лучше не делать), то для этого есть спец. инструменты, например:
http://u75[dot]ru/parking-filters
http://u75[dot]ru/direct-redirect
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB