- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть статичные файлы вида "index.php?categoryID=12". Как в .htaccess сделать так, чтобы при обращении к "site.ru/index.php?categoryID=12" открывался файл "index.php?categoryID=12"?
Я реализовал подобную вещь на PHP:
Как такое сделать в .htaccess? Пока он таким получается:
Есть статичные файлы вида "index.php?categoryID=12"
Как понять? Какое имя файла на диске?
Есть статичные файлы вида "index.php?categoryID=12"
Это ОДИН файл index.php, который динамически создает страницы вида /?categoryID=12. Отображаемая на них информация загружается, например, из каких-то файлов, физически имеющихся на сервере, по categoryID:
Как-то так, а иначе в вашем вопросе - белиберда.
Это ОДИН файл index.php, который динамически создает страницы вида
Всё же, видимо, у Gerga есть именно статичные файлы и именно с таким именем.. =)
Как понять? Какое имя файла на диске?
именно "index.php?categoryID=12".
ivan-lev, да.
Или
именно "index.php?categoryID=12".
ivan-lev, да.
Что именно, да? Физически на диске какие у вас файлы?
Если надо отдавать именно файлы по имени это одно, а если как заметил fliger, index.php генерирует по переменной это уже другое.
jkm, спасибо! То, что нужно.
---------- Добавлено 29.02.2020 в 11:09 ----------
RewriteCond %{REQUEST_FILENAME}?%{QUERY_STRING} -f
RewriteRule (.+) /$1\%3F%{QUERY_STRING}? [L]
Что тут "/$1\%3F%{QUERY_STRING}?" происходит?
---------- Добавлено 29.02.2020 в 11:22 ----------
Я понял. "%3F" - это код вопросительного знака. Не используется знак "?", чтобы не было воспринято как передача GET-параметров в исполняемый php файл?
А когда происходит замена "%3F" на вопросительный знак?
Я понял. "%3F" - это код вопросительного знака. Не используется знак "?", чтобы не было воспринято как передача GET-параметров в исполняемый php файл?
А когда происходит замена "%3F" на вопросительный знак?
Всё верно "%3F" это код вопросительного знака.
В RewriteRule c шаблоном сопоставляется строка уже в нормализованном виде, т.е после преобразования относительных элементов пути ".", ".." и декодирования текста, заданного в виде %XX.
Флаг [L] останавливает текущую итерацию обработки запроса, а mod_rewrite запускает обработку запроса снова и снова, до тех пор, пока он не перестанет меняться.
Перед началом очередной итерации обработки запроса снова происходит преобразование "." ".." и декодирование %XX.
https://habr.com/en/company/sprinthost/blog/129560/
Не понимаю зачем вы используете $_SERVER['SCRIPT_FILENAME'], я так понимаю, что вам нужен текущий каталог и загрузка файла имя которого есть в QUERY_STRING 🙄
Так вот пример,
$file = __DIR__.'/'.$_SERVER['QUERY_STRING'];
// проверка на сущ. файла и его вывод
if (file_exists($file)) {
echo file_get_contents($file);
exit;
}
Ну и для удобства, можно сразу исполнять, например вложенность 4 🤣
https://test.ru/test.php?../../../../etc/passwd
По сабжу. Мб
RewriteRule ^index.php?categoryID=(.*)$ file.php?id=$1
<?php
//file.php
echo file_get_contents('/var/www/site/files/index.php?categoryID='.(int)$_GET['id']);
?>
Слишком мудреная тема использовать названия файла .php с параметрами, так как расширения вебсервер хватает как php. В данной ситуации проще всего конвертнуть все файлы в нормальный вид и использовать.
Не понимаю зачем вы используете $_SERVER['SCRIPT_FILENAME']
Так вот пример,
$file = __DIR__.'/'.$_SERVER['QUERY_STRING'];
Получится "папка/categoryID=12" - это не подходит. Плюс используя "__DIR__" вы делаете такую возможность:
https://test.ru/test.php?../../../../etc/passwd
Со "SCRIPT_FILENAME" такое не пройдет.
---------- Добавлено 29.02.2020 в 13:12 ----------
Слишком мудреная тема использовать названия файла .php с параметрами, так как расширения вебсервер хватает как php. В данной ситуации проще всего конвертнуть все файлы в нормальный вид и использовать.
2 RewriteCond и 1 RewriteRule и все отлично. Спасибо, jkm!