Правило перезаписи .htaccess для добавления косой черты в конце путем несовпадения строки в URL-адресе

Следующее правило .htaccess отменяет сопоставление строки admin и добавляет завершающую косую черту (/) к этому URL-адресу, если admin не найден в URL-адресе.

RewriteRule ^((?!admin).)*((?!\/).)$ /$1/ [L,R] 

Но у него есть ошибка, и это

  http://www.domain.com/index

должно получиться: http://www.domain.com/index/

Но в настоящее время получается: http://www.domain.com/inde/

Пожалуйста, найдите решение, чтобы исправить это. Большое спасибо .


person SP Singh    schedule 22.03.2013    source источник
comment
Вы сами построили регулярное выражение?   -  person speakr    schedule 22.03.2013
comment
Аналогичный вопрос здесь: Add Trailing to URls   -  person Subedi Kishor    schedule 22.03.2013


Ответы (1)


Ваше выражение захватило последний символ в группе.

Это решит проблему:

RewriteRule ^(?!.*admin)(.*?)\/?$ /$1/ [L,R] 

Ознакомьтесь с пояснительной демонстрацией здесь: http://regex101.com/r/kL6pV1.

Примечание. Это сделает недействительным любой URL-адрес, который содержит admin, не обязательно начинающийся с admin.

person CSᵠ    schedule 22.03.2013