Регулярное выражение .htaccess должно сделать запаздывание наклонной черты вправо дополнительным

Я должен включать дополнительное запаздывание forwardslash, это / в моем RewriteRule

Что я имею, до сих пор

RewriteRule ^([a-zA-Z0-9]+)$ u.php?$1|$2

Который хорошо работает, например, http://foo.bar/abcde перенаправит на http://foo.bar/u.php?abcde и обрабатывает любые querystring параметры, которые могут присутствовать.

То, что я должен сделать, является взятием http://foo.bar/abcde/ (с запаздыванием forwardslash) и перенаправление на http://foo.bar/u.php?abcde

Так, если его подарок, я должен удалить заключительную наклонную черту вправо из 1$ в моем RewriteRule. Как я делаю это? Я плохо знаком с апачем и попробовал много различных правил regex, но не могу разобраться в нем.

7
задан Phil 3 February 2010 в 18:28
поделиться

1 ответ

Просто поставьте /? перед $ в конце вашего шаблона:

RewriteRule ^([a-zA-Z0-9]+)/?$ u.php?$1

Но я бы предлагаю вам разрешить только одно написание (с косой чертой или без него) и перенаправить другое:

# remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ /$1 [L,R=301]
# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ /$0/ [L,R=301]
19
ответ дан 6 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: