Перенаправить с одного и того же 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]

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

1
задан 1 August 2017 в 23:52
1 ответ
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 .

1
ответ дан 3 December 2019 в 23:27

Теги

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