Реклама на сайте Advertise with us

Mod_rewrite, всё, что после корня домена в GET

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

📈sflash.biz

С нами с 03.11.12
Сообщения: 3912
Рейтинг: 4447


Передовик Master-X (16.04.2018) Передовик Master-X (16.07.2018) Передовик Master-X (16.12.2022) Передовик Master-X (01.01.2023)
Ссылка на сообщениеДобавлено: 30/08/16 в 16:25       Ответить с цитатойцитата 

Как максимально просто организовать такой набор правил RewriteRule, чтоб
Код:
http://domain.com/trololo
http://domain.com/trololo/
http://domain.com/trololo.html

передавалось, как
Код:
http://domain.com/in.php?s=trololo
http://domain.com/in.php?s=trololo
http://domain.com/in.php?s=trololo.html

соответственно?
И только можно было бы сделать несколько исключений по типу файла и по URL
Код:
http://domain.com/trololo.php - для всех /*.php
http://domain.com/trololo.jpg - для всех /*.jpg
http://domain.com/trololo1 - только trololo1
http://domain.com/trololo2 - только trololo2

отдавались реальные файлы сервера?

0
 



С нами с 17.12.00
Сообщения: 1653
Рейтинг: 1082

Ссылка на сообщениеДобавлено: 03/09/16 в 08:09       Ответить с цитатойцитата 

сначала исключения. Чтобы они обрабатывались в первую очередь и если правило сработает то флаг [L] останавливает проверку дальнейших правил
RewriteRule ^.+\.php$ $0 [L]
RewriteRule ^.+\.jpg$ $0 [L]
RewriteRule ^trololo1$ $0 [L]
RewriteRule ^trololo2$ $0 [L]

если предыдущие правила не сработали и скрипт дошел до этой строки
то сюда попадают все символы кроме слеша /
RewriteRule ^([^/]+) in.php?s=$1 [L]

учти что в таком случае
http://domain.com/trololo/othershit

othershit потеряется. in.php получит только все что было до первого слеша т.е. trololo в данном случае
если тебе нужно чтобы вся строка после домена шла в get то:
RewriteRule ^.*$ in.php?s=$0 [L]

0
 



С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032


Передовик Master-X (16.11.2012)
Ссылка на сообщениеДобавлено: 03/09/16 в 14:36       Ответить с цитатойцитата 

Стандартный подход: все существующие пути отдавать как есть, все несуществующие - пересылать на ядро

Код:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])/?$ in.php?s=$1 [L,QSA] # дополнительно выкусываем слеш в конце

apache, bash, css, elasticsearch, ffmpeg, html, js, mysql, mongo, nginx, php; *nix only

1
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »