RewriteRule не захватывает обратную ссылку - PullRequest
1 голос
/ 13 марта 2020

У меня есть RewriteRule в файле .htaccess, но я не могу заставить его работать правильно:

RewriteRule ^(?!(redirect-build)) redirect-build/index.php?url=$1

Обратная ссылка $ 1 не сохраняется, а Apache перезаписывает параметр URL без значения в Это. Вот фрагмент файла журнала:

[Fri Mar 13 13:46:26.254929 2020] [rewrite:trace2] [pid 10612:tid 1344] mod_rewrite.c(477): [client 127.0.0.1:58838] 127.0.0.1 - - [domain/sid#1c4a1bda5b0][rid#1c4a2df8180/initial] [perdir D:/document-root/path/to/directory/] rewrite 'zalety-jablek' -> 'redirect-build/index.php?url='
[Fri Mar 13 13:46:26.254929 2020] [rewrite:trace3] [pid 10612:tid 1344] mod_rewrite.c(477): [client 127.0.0.1:58838] 127.0.0.1 - - [domain/sid#1c4a1bda5b0][rid#1c4a2df8180/initial] split uri=redirect-build/index.php?url= -> uri=redirect-build/index.php, args=url=

Есть ли какое-нибудь решение?

1 Ответ

0 голосов
/ 13 марта 2020

Пример: example.com/some-path должен разрешить до: example.com/redirect-build/index.php?url=some-path

В этом случае вам необходимо настроить шаблон RewriteRule, чтобы он соответствовал и захватывал значение следующим образом:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ redirect-build/index.php?url=$1 [L,QSA,NC]
  • ([\w-]+) - группа захвата для сопоставления и захвата 1+ любого символа слова или дефиса
  • RewriteCond используется для пропуска существующих файлов и каталогов из этого переписать
...