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

Перенаправить с одного и того же URL-адреса и использовать псевдоним с помощью mod_rewrite и apache2?

По сути, я размещаю статический HTML-сайт, и мне нужно:

  1. http://example.com/some-direcory/index.html
    будет перенаправлен на:
    http://example.com/some-direcory

  2. Сохраняя физический файл, представляющий этот контент, по адресу:
    http://example.com/some-direcory/index.html

Вот что у меня есть:

# rewrite /dir/file to /dir/file/index.html
RewriteRule ^([\w\/-]+)(\?.*)?$ $1/index.html$2 [L,T=application/x-httpd-html]

Кажется, это хорошо работает для моих потребностей №2 выше, а затем у меня есть это, которое удовлетворяет мои потребности в №1:

# rewrite /dir/file/index.html to /dir/file
RewriteRule ^(.*)/index\.html$ /$1 [R=301,L,C]

Однако, когда я комбинирую эти два правила, очевидно, что они создают цикл перенаправления. Есть ли способ обойти это?

RewriteCond "%{THE_REQUEST}" "\s(/[\w/-]+?)/index\.html[?\s]"
RewriteRule "^" "%1" [R=301,L,C]

RewriteCond "%{DOCUMENT_ROOT}/$1/index.html" -f
RewriteRule "^([\w/-]+[^/])$" "/$1/index.html" [L,T=application/x-httpd-html]

Обратите внимание DirectorySlash возможная проблема.