Правила объединения перенаправления IIRF?

У меня есть 3 "правила". Один, чтобы URL-адреса были строчными, другой, чтобы включать косую черту в конце каталогов, и третий, чтобы заставить доступ к страницам index.html вместо этого быть через каталог.

Проблема с тем, как она у меня есть, иногда это вызывает несколько переадресаций 301. Мне бы очень хотелось, чтобы каждое правило применялось по очереди, а затем, если необходимо, один раз перенаправлялось на конечный URL-адрес. Например, может потребоваться преобразовать URL-адрес в нижний регистр и добавить косую черту. Или, возможно, потребуется использовать нижний регистр и изменить index.html на каталог.

Любые идеи, как я могу это сделать? Спасибо большое.

Правила ниже:

#LOWERCASE URLS For Directories, aspx, html files
RedirectRule ^/(.*[A-Z].*(/|\.html|\.aspx))$  /#L$1#E [R=301]


#ADD SLASH TO DIRECTORIES
#---------------------------------------------
#Perm Redirect If:
#Starts w/ Forward Slash
#Match Any Characters Except (. or ?) 1 or more times
#End w/ someting besides a dot, ?, or slash
#If So, Perm Redirect captured piece W/ Slash At End and at front
RedirectRule ^/([^.?]+[^.?/])$ /$1/  [I,R=301]


#CHANGE INDEX.HTML REQUESTS TO DIRECTORY REQUESTS
#---------------------------------------------
RedirectRule ^/(.*)/index\.html$ /$1/  [I,R=301]

person Phill    schedule 18.11.2009    source источник


Ответы (3)


На этот вопрос есть отличный ответ на форумах IIRF.

person Cheeso    schedule 04.04.2010

Я вижу только возможность объединить два последних:

RedirectRule ^/([^A-Z?]*[A-Z].*(/|\.html|\.aspx))$  /#L$1#E [R=301]
RedirectRule ^/([^.?]+?[^.?/])(/index\.html)?$ /$1/ [I,R=301]
person Gumbo    schedule 19.11.2009

к сожалению, ответ на форумах IIRF не решает проблему множественного перенаправления. каждое правило по-прежнему вызывает собственное перенаправление.

использование RewriteRule [без флага перенаправления] вместо RedirectRule вызывает ошибку в статусе IIRF:

# rule:
# force HTTPS [disable on dev site until port 80 and port 443 served by same site]
# after rewrite continue with remaining tests
RewriteCond %{HTTPS}    off
RewriteRule ^/(.*)$ https://www.example.com/$1 [NC]

error: C:\Inetpub\wwwroot\example-com\www\Iirf.ini(26): ПРЕДУПРЕЖДЕНИЕ: Перезапись на полностью определенный URL-адрес. Вероятно, неправильно. Вам может понадобиться RedirectRule или ProxyPass.

Я ожидал, что IIRF возьмет результаты этого правила и снова отправит их обратно через правила IIRF, соберет любые другие модификации URL-адресов по пути и, в конечном итоге, отправит одно перенаправление 301 обратно в браузер с окончательным результатом все переписывает. Флаг [N] делает это в mod_rewrite, насколько я понимаю.

person Cameron Knowlton    schedule 08.09.2016