У меня есть каталог «Пользователи» с 3 файлами внутри

/index.php
/activity.php
/settings.php

В моем правиле перезаписи указано

RewriteRule ^user/([0-9a-zA-Z_]+)/ users/index.php?id=$1 [NC,L]

Теперь я хочу перейти к

http://localhost/user/userid/logs

Итак, я попробовал

RewriteRule ^user/([0-9a-zA-Z_]+)/logs users/activity.php [NC,L]

Но он не работает, он загружает содержимое индексного файла

Skyyy

Ответов: 1

Ответы (1)

Я предполагаю, что ваше второе правило перезаписи следует за первым. Флаг L заставляет перезапись прекращать поиск дополнительных правил после совпадения. Собственно первая строка:

RewriteRule ^user/([0-9a-zA-Z_]+)/ users/index.php?id=$1 [NC,L]

Соответствует, а остальные игнорирует. Вы можете попробовать разместить вторую строку над ним так:

RewriteRule ^user/([0-9a-zA-Z_]+)/logs users/activity.php [NC,L]
RewriteRule ^user/([0-9a-zA-Z_]+)/ users/index.php?id=$1 [NC,L]

Вы также можете удалить флаг L, но я не знаю, как выглядит остальная часть вашего htaccess, поэтому другие правила могут быть отменены.

Или вы также можете попробовать это:

RewriteRule ^user/([0-9a-zA-Z_]+)/?$ users/index.php?id=$1 [NC,L]
RewriteRule ^user/([0-9a-zA-Z_]+)/logs/?$ users/activity.php [NC,L]

2022 WebDevInsider