Назад | Перейти на главную страницу

Apache htaccess RewriteRule для удаления конечной косой черты; бесконечный цикл?

Я использую следующее в .htaccess (mod_rewrite), чтобы убрать косую черту с моих URL:

RewriteRule ^([a-z0-9_-]+)/$ $1 [L,NC,R=301]

Конечно, поскольку класс символа не соответствует косой черте, это отлично работает для таких ссылок, как some_page/, но нет article/some_page/.

Если я добавлю косую черту к классу символов, чтобы сделать [a-z0-9_/-], Я получаю бесконечный цикл при попытке загрузить страницу. Я также пробовал сделать + не жадный, используя +?, но это тоже не сработало; и удаление R=301 перенаправить.

(Если это имеет значение, страница для загрузки, /article/some_page/ на самом деле /article/some_page/index.html, Я просто хочу, чтобы он выглядел как /article/some_page.)

Если это имеет значение

Да, это так. Apache (mod_dir) отправит обратно перенаправление, если вы передадите URL-адрес, который сопоставляется с каталогом без завершающего '/', например

[colinm@example ~]$ curl -I http://localhost/somedir
HTTP/1.1 301 Moved Permanently
Date: Mon, 24 Oct 2011 11:48:37 GMT
Server: Apache/2.2.3 (Red Hat)
Location: http://localhost/somedir/
Content-Type: text/html; charset=iso-8859-1