Loading...
Объясните что делают эти правила, несколько дней в гугле ищу не могу понять особенно (.*) и что это означает $1 в конце index.php?f=
php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?f=$1 [L,QSA]

________
посл. ред. 25.12.2023 в 13:24; всего 4 раз(а); by SNEG
SNEG , Это правило Apache mod_rewrite, которое используется для перенаправления всех запросов на `index.php` и передачи URL-адреса в качестве параметра `f`.

Подробное описание правила:

- `RewriteCond %{REQUEST_FILENAME} !-f`: Это условие проверяет, не соответствует ли URL-адрес существующему файлу.
- `RewriteCond %{REQUEST_FILENAME} !-d`: Это условие проверяет, не соответствует ли URL-адрес существующей директории.
- `RewriteRule ^(.*)$ index.php?f=$1 [L,QSA]`: Это именно правило, которое выполняет перенаправление. Оно сопоставляет любой URL-адрес (`^(.*)$`) и перенаправляет его на `index.php`, добавляя исходный URL-адрес в качестве параметра запроса `f`. Флаги `[L,QSA]` означают, что это последнее правило для обработки для этого запроса (`L`) и что все существующие параметры запроса должны быть добавлены к новому (`QSA`).

Таким образом, в целом, это правило используется для маршрутизации всех запросов на `index.php`, передачи URL-адреса в качестве параметра.
https://discript.ru/blog/chto-takoe-rewriterule/
Для того чтобы это понять, придется осилить регулярки
https://www.php.net/manual/ru/reference.pcre.pattern.syntax.php
SNEG (25 дек 2023, в 13:22)
Объясните что делают эти правила, несколько дней в гугле ищу не могу понять особенно (.*) и что это означает $1 в конце index.php?f=
php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?f=$1 [L,QSA]
Едина точка входа.
^ - начало стороки (начиная с слеша, bym.guru/user/1
(.*) - всё что с начала и до конца поместить в переменную(массив) user/1
$ - ограничитель означающий конец строки.
- $1 и есть та переменная, в которой помещаются данные, их может быть очень много $2,$3...
Советую почитать про регулярные выражения и php роутеры, как они работают и для чего (самая простая реализация). После заняться следующими этапами в изучении MVC
________
посл. ред. 25.12.2023 в 14:17; всего 1 раз(а); by _(Ulty)_
SNEG (25 дек 2023, в 13:22)
Объясните что делают эти правила, несколько дней в гугле ищу не могу понять особенно (.*) и что это означает $1 в конце index.php?f=
php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?f=$1 [L,QSA]
Ці правила є частиною конфігурації веб-сервера Apache для обробки запитів URL.

RewriteCond %{REQUEST_FILENAME} !-f: Це перевіряє, чи не існує файл зі шляхом, який був запитаний. Умова буде виконуватися, якщо файл не існує.

RewriteCond %{REQUEST_FILENAME} !-d: Це перевіряє, чи не існує каталог зі шляхом, який був запитаний. Умова буде виконуватися, якщо каталог не існує.

RewriteRule ^(.*)$ index.php?f=$1 [L,QSA]: Це переписує URL так, що всі запити направляються на файл index.php, а параметр f отримує значення, яке представляє собою весь шлях після домену.

^(.*)$: Це регулярний вираз, який збігається з усім шляхом після домену.

index.php?f=$1: Це новий шлях, на який буде перенаправлено запит. $1 - це частина URL, яку ми вилучили за допомогою (.*?), і вона підставляється в параметр f у новому URL.

[L,QSA]: Це флаги правила. L означає "остановити обробку правил", а QSA додає до нового URL будь-які існуючі параметри запиту.

Ці правила призначені для направлення всіх запитів на сервері (якщо не існує відповідного файлу або каталогу) на скрипт index.php, де весь шлях після домену буде доступний у змінній $_GET['f'].
[i] [!] (25 дек 2023, в 15:37)
Ці правила є частиною конфігурації веб-сервера Apache для обробки запитів URL.

RewriteCond %{REQUEST_FILENAME} !-f: Це перевіряє, чи не існує файл зі шляхом, який був запитаний. Умова буде виконуватися, якщо файл не існує.

RewriteCond %{REQUEST_FILENAME} !-d: Це перевіряє, чи не існує каталог зі шляхом, який був запитаний. Умова буде виконуватися, якщо каталог не існує.

RewriteRule ^(.*)$ index.php?f=$1 [L,QSA]: Це переписує URL так, що всі запити направляються на файл index.php, а параметр f отримує значення, яке представляє собою весь шлях після домену.

^(.*)$: Це регулярний вираз, який збігається з усім шляхом після домену.

index.php?f=$1: Це новий шлях, на який буде перенаправлено запит. $1 - це частина URL, яку ми вилучили за допомогою (.*?), і вона підставляється в параметр f у новому URL.

[L,QSA]: Це флаги правила. L означає "остановити обробку правил", а QSA додає до нового URL будь-які існуючі параметри запиту.

Ці правила призначені для направлення всіх запитів на сервері (якщо не існує відповідного файлу або каталогу) на скрипт index.php, де весь шлях після домену буде доступний у змінній $_GET['f'].
С выше с всех разъяснений понял , если файл не существует или каталог, запрос будет перенесен на index.php?f= , если , я перехожу по адресу test.ru/ujjg/haha.php и такого файла нет, то url будет построен как index.php?f=ujjg/haha.php

Исправьть если что-то не так , и в чём прикол так делать? Что этот адрес даст index.php?f=ujjg/haha.php ?
________
посл. ред. 25.12.2023 в 16:40; всего 3 раз(а); by SNEG
SNEG (25 дек 2023, в 16:36)
С выше с всех разъяснений понял , если файл не существует или каталог, запрос будет перенесен на index.php?f= , если , я перехожу по адресу test.ru/ujjg/haha.php и такого файла нет, то url будет построен как index.php?f=ujjg/haha.php

Исправьть если что-то не так , и в чём прикол так делать? Что этот адрес даст index.php?f=ujjg/haha.php ?
В том что в зависимости от адреса выводится разный контент )
Something (25 дек 2023, в 17:14)
В том что в зависимости от адреса выводится разный контент )
test.ru/ujjg/haha.php такого файла нет, то url будет построен как index.php?f=ujjg/haha.php
Для чего это делается ?
________
посл. ред. 25.12.2023 в 17:54; всего 1 раз(а); by SNEG
Онлайн: 2
Время:
Gen. 0.1288
(c) Bym.Guru 2010-2025