Мені потрібно змінити своє, .htaccess
і є два рядки, які я не розумію.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Коли я повинен використовувати ці рядки?
Мені потрібно змінити своє, .htaccess
і є два рядки, які я не розумію.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Коли я повинен використовувати ці рядки?
Відповіді:
Не місце давати повний підручник, але ось це коротко;
RewriteCond в основному означає "виконати наступний RewriteRule, тільки якщо це правда". !-l
Шлях є умовою , що запит не для посилання ( !
кошти немає, -l
значить посилання)
По суті, RewriteRule означає, що якщо запит ^(.+)$
буде збігатися (відповідає будь-якій URL-адресі, крім кореня сервера), він буде переписаний, index.php?url=$1
що означає, що запит olle
буде переписаний як index.php?url=olle
).
QSA
означає, що якщо рядок запиту передано з оригінальною URL-адресою, він буде доданий до перезапису ( olle?p=1
буде переписаний як index.php?url=olle&p=1
.
L
означає, що якщо правило відповідає, не обробляйте більше RewriteRules нижче цього.
Для отримання більш повної інформації про це перейдіть за посиланнями вище. Підтримка перезапису може бути трохи важкою для розуміння, але на stackoverflow можна дізнатися досить багато прикладів.
?
на &
, що робить його неможливо розрізнити /page&foobar
проти /page?foobar
. Як я можу зупинити заміну QSA ?
до &
?
Якщо
виконано такі умови, перепишіть URL-адресу: Якщо запитуване ім’я файлу не є каталогом,
RewriteCond %{REQUEST_FILENAME} !-d
і якщо запитуване ім’я файлу не є звичайним файлом, який існує,
RewriteCond %{REQUEST_FILENAME} !-f
і якщо запитуване ім’я файлу не є символічним посиланням,
RewriteCond %{REQUEST_FILENAME} !-l
потім перепишіть URL-адресу наступним чином:
візьміть ціле ім'я файлу запиту та введіть його як значення параметра "url" для параметра index.php. Додайте будь-який рядок запиту з вихідної URL-адреси в якості подальших параметрів запиту (QSA) і припиніть обробляти цей .htaccess-файл (L).
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Ще один приклад:
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
З прапором [QSA] запит на
/ сторінки / 123? один = два
буде відображено в
/page.php?page=123&one=two