Зачем использовать Rewritecond и переписать для проверки условия URL?

во многих ответах правила перезаписи, при тестировании URL для определенного состояния я часто вижу смесь использования Rewritecond с Request_uri, а также самой перезаписи.

Это просто личные предпочтения или есть ли причина производительности или просто ясность правил? Все это допустимые причины, на мой взгляд; Мне просто интересно, есть ли определенная причина.

Я знаю, что есть условия, когда Rewritecond является единственным выбором. Я заинтересован здесь, в тех случаях, когда перепиратель также будет работать. Обычно это более простые правила.

Вот несколько примеров:

Пример 1

Этот ответ имеет общий шаблон, позволяют определенные папки как есть. Режим технического обслуживания HTACCESS Разрешить определенные каталоги

# always allow these folders
RewriteCond %{REQUEST_URI} ^/display_me_always [OR]
RewriteCond %{REQUEST_URI} ^/another_folder [OR]
RewriteCond %{REQUEST_URI} ^/even_more_folders
RewriteRule .+ - [L]

Это может быть сделано только с реграмме, как:

RewriteRule ^/(?:display_me_always|another_folder|even_more_folders) - [L]

(добавлено?: Для нехватки. Я никогда не совсем уверен, что это быстрее иметь более простое правило, или не для захвата.)

Пример 2

Изменение этого для более распространенного сценария, перенаправляйте определенные папки в другие папки.

RewriteCond %{REQUEST_URI} ^/display_me_always [OR]
RewriteCond %{REQUEST_URI} ^/another_folder [OR]
RewriteCond %{REQUEST_URI} ^/even_more_folders
RewriteRule ^/[^/]+/(.*)$ /other_location/$1 [L]

Это кажется проще с правилом.

RewriteRule ^/(?:display_me_always|another_folder|even_more_folders)/(.*)$ /other_location/$1 [R=301,NC]

Пример 3

Этот ответ имеет общий рисунок, перенаправить, если он не в целевом месте. Правило переписывания мода для перенаправления всех PDF-запроса в другое место . Проверьте папку с перезаписью, затем проверьте файл с правилом.

Я вижу негативное состояние намного яснее, чтобы сделать с Rewritecond, но все еще возможно с переписанием.

RewriteCond %{REQUEST_URI} !^/web_content/pdf/
RewriteRule ^(.+\.pdf)$ /web_content/pdf/$1 [L]

Это может быть написано как

RewriteRule ^(?!/web_content/pdf/)(.+\.pdf)$ /web_content/pdf/$1 [L]

6
задан Community 23 May 2017 в 12:04
поделиться