Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 24.04.2013
Сообщений: 48
1

Запретить доступ по site.ru/index.php?id=1

28.12.2016, 16:29. Показов 1092. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени!
Встала задача написать ЧПУ для сайта.
Работа ЧПУ настроена, сейчас доступ к страницам происходит вида site.ru/Boks-ofis_Rossii_Passazhiry_vzjali_horoshij_start_f_4
Где
Boks-ofis_Rossii_Passazhiry_vzjali_horoshij_start_ - просто название фильма в транслите
f - означает что получаем фильм (f - фильм, r - каталог, pr - подраздел и тд)
4 - id фильма, раздела, подраздела и тд ( в зависимости что надо получить)

Все работает нормально, но есть одно НО!

Дело в том, что заказчик требует что бы все ссылки прямые (вида site.ru/index.php?id=1) были не доступны (КРОМЕ АДМИНКИ!!!)

Есть мысли, прописать что-то подобное:
PHP
1
if(strpos($_SERVER['REQUEST_URI'], '.php')) header('location: /404.php');
Но по моему это не совсем правильный вариант.

Помогите пожалуйста с реализацией через htaccess

Добавлено через 1 час 53 минуты
Не стал морочить голову так как там много получается костылей..
Кому интересно, вот решение которое использовал
PHP
1
2
3
4
5
6
7
8
if(strpos($_SERVER['REQUEST_URI'], '.php') && !strpos($_SERVER['REQUEST_URI'], 'admin.php')) 
{
    //header('location: /404.php');
    header("HTTP/1.0 404 Not Found");
    header("HTTP/1.1 404 Not Found");
    header("Status: 404 Not Found");
    die();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2016, 16:29
Ответы с готовыми решениями:

Как запретить доступ к файлам на хостинге, кроме index.php
Добрый ночи товарищи! Создал сайт, пока он на тесте. Чтобы загрузить главную страницу мне нужно...

Site.ru/index?=1213. вместо site.ru/index?=12136541361
Здравствуйте, как можно при выводе из базы данных выводить ссылку не полностью, а сокращённо, то...

Чтобы при вводе "site.ru" подразумевалось "site.ru/index.php"
Использую OpenServer, установил Yii2 и сделал корневую папку доменов "basic\web", установил туда...

Fread(): Length parameter must be greater than 0 in C:\OpenServer\domains\site.ru\index.php on line 138
case 1: $bb = "111"; $id = $_POST; $file = fopen('1.txt', 'r'); $text = fread($file,...

18
Заблокирован
28.12.2016, 19:33 2
Заказчик дело говорит. По-хорошему дубли лучше вовсе не плодить.

Но раз уже сделали, то такое обычно в .htaccess закрывается правилом с условием с THE_REQUEST.
0
0 / 0 / 1
Регистрация: 24.04.2013
Сообщений: 48
28.12.2016, 19:36  [ТС] 3
Если не затруднит, напишите готовый пример, по возможности объясните как работает..
Не силен просто в этом, но не помешают эти знания.
Благодарю!
0
91 / 91 / 13
Регистрация: 14.07.2012
Сообщений: 539
28.12.2016, 22:35 4
Valen_x, лучше не 404, а 301 редирект сделать. В случае 404 бот будет ломится проверять, а вдруг заработает. В 301 "склеит" и не так часто проверять будет.
0
0 / 0 / 1
Регистрация: 24.04.2013
Сообщений: 48
28.12.2016, 22:37  [ТС] 5
pyramida, не совсем понял. Редирект куда сделать?
0
91 / 91 / 13
Регистрация: 14.07.2012
Сообщений: 539
28.12.2016, 22:41 6
Valen_x, с параметрами, на ЧПУ.
0
0 / 0 / 1
Регистрация: 24.04.2013
Сообщений: 48
28.12.2016, 22:44  [ТС] 7
pyramida, а как узнать имя фильма в htaccess?
вот будет примерно такая ссылка site.ru/index.php?act=film&id=1
а мне с нее надо получить site.ru/name_film_f_1
0
91 / 91 / 13
Регистрация: 14.07.2012
Сообщений: 539
28.12.2016, 22:50 8
Valen_x, Вы htaccess лучше не трогайте. Лучше все редиректы через PHP. Считается, что записи в htaccess очень сильно нагружают сервер.
ЧПУ сделано через htaccess? Я по правилам его, ничего не могу сказать Как раз изучаю PHP ройтеры это более хорошее решение, чем правила в htaccess
0
Заблокирован
28.12.2016, 22:50 9
Цитата Сообщение от Valen_x Посмотреть сообщение
Редирект куда сделать?
Редирект на канонический адрес, но это совсем не обязательно и может быть даже вредно. pyramida, чтобы делать редирект, нужно быть уверенным, что id корректен. На уровне .htaccess это сделать проблематично, к тому же, если делать отлов просто по index.php, то id может и не быть. Если делать программно, причем так, как сделал ТС, то нужно еще суметь определить, был ли исходный адрес каноническим или нет. К тому же тут нужно будет делать два варианта: либо редирект, либо 404-ая.

Лучше закрыть и забыть. А еще лучше, как написал выше, вообще не иметь дублей, чтобы нечего было закрывать.
0
0 / 0 / 1
Регистрация: 24.04.2013
Сообщений: 48
28.12.2016, 22:56  [ТС] 10
miketomlin, ага, вот и я так подумал...
Были и такие мысли...
типа отравляем на файл, который вытягивает по id с БД имя, затем формирует ЧПУ адрес и перенаправляет..
Но думаю это ПС вообще не понравится.. По сути попахивает извращением))
0
Заблокирован
28.12.2016, 23:05 11
Цитата Сообщение от Valen_x Посмотреть сообщение
типа отравляем на файл, который вытягивает по id с БД имя, затем формирует ЧПУ адрес и перенаправляет..
Но думаю это ПС вообще не понравится.. По сути попахивает извращением))
Нормальный вариант, но лишний. Такое делают, когда меняется адресация у уже работающего раскрученного сайта.
0
0 / 0 / 1
Регистрация: 24.04.2013
Сообщений: 48
28.12.2016, 23:10  [ТС] 12
miketomlin, Это да... Но это проект новый пишу на заказ. Не люблю писать разные подобные премудрости.
Думаю такой как вот реализовал вариант, самый простой, понятный и без особых затей..
+ по защите, так как практически не реально узнать имена каталогов, файлов на которых идет обработка данных, и имена переменных.
Согласны?
0
Заблокирован
28.12.2016, 23:13 13
Не совсем понял. Про index.php догадаться легко, а вот если его переименовать в dff6sfj3gog7hrf0.php, то дубли можно вообще не закрывать
0
91 / 91 / 13
Регистрация: 14.07.2012
Сообщений: 539
28.12.2016, 23:16 14
Цитата Сообщение от miketomlin Посмотреть сообщение
Редирект на канонический адрес, но это совсем не обязательно
Редирет не показывает канонический адрес, а делает перенос урла. ТС нужно, чтобы не было коротких урл на сайте. Почему я посоветовал сделать 301, написал выше про роботс.
Цитата Сообщение от miketomlin Посмотреть сообщение
и может быть даже вредно
Чем например? Тем, что ЧПУ это часть контента и участвует в ранжировании?
Вы пишите много "если", не видя кода я и не сказал "как", а сказал "что лучше сделать". Если у ТС будут вопросы, он спросит.
0
Заблокирован
28.12.2016, 23:18 15
Я на боковую. На последок вам простая статья, как можно сделать нативные ЧПУ:
Как сделать единую точку входа с ЧПУ?

Добавлено через 2 минуты
Цитата Сообщение от pyramida Посмотреть сообщение
Вы пишите много "если", не видя кода я и не сказал "как", а сказал "что лучше сделать".
А я сказал, что лучше не делать, если сайт новый, о чем можно догадаться по стартовому посту ТСа.
0
91 / 91 / 13
Регистрация: 14.07.2012
Сообщений: 539
28.12.2016, 23:22 16
Цитата Сообщение от miketomlin Посмотреть сообщение
если сайт новый
В этом случае и нужно предусмотреть все заранее, и не давать ботам лишнего.
0
Заблокирован
28.12.2016, 23:25 17
P.S. Редирект делается, но не для таких дублей, а например для трэйлинг слешей или верхнего регистра (послед. см. по ссылке).

Добавлено через 3 минуты
Цитата Сообщение от pyramida Посмотреть сообщение
В этом случае и нужно предусмотреть все заранее, и не давать ботам лишнего.
Если сразу закрыть левые адреса, о чем изначально шла речь, и нигде их не постить, ботам неоткуда будет их взять.

Всем спать!
0
91 / 91 / 13
Регистрация: 14.07.2012
Сообщений: 539
28.12.2016, 23:30 18
Цитата Сообщение от miketomlin Посмотреть сообщение
Если сразу закрыть левые адреса, о чем изначально шла речь, и нигде их не постить, ботам неоткуда будет их взять.
Опять "если" Бот может проигнорировать закрытие в роботс и ноиндекс и попадет страница в индекс. Такие случаи бывают.
Спокойной ночи. Я уже выспался.
0
Заблокирован
28.12.2016, 23:37 19
Угу, несуществующая страница попадет в индекс Такие случаи бывают только у криворучек.

Спасибо, и вам спокойной ночи.
0
28.12.2016, 23:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2016, 23:37
Помогаю со студенческими работами здесь

Как работает url такого типа index.php/reg/index
Мне интересно как это работает. И в каких случаях это пригодится. Встречал такой url в cms. Я...

Как сделать одинаковое отображене нужного мне контента в index.php и index.html ?
Здравствуйте ! Подскажите пожалуйста .И извините за глупый вопрос.К php редко обращаюсь. Опишу...

Формирование ссылки вместо index.php или main.php
Здравствуйте, у меня сформировался вопрос! Как сделать ссылку такого вида site.ru/main вместо...

index.php не иполняется код php вставленный в html
index.php не иполняется код php вставленный в html, пример: есть файлы: index.php - исполняемый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru