Сделайте исключение на целый сайт правилом RedirectMatch

Попытайтесь использовать csvde, хороший ресурс здесь, это - вероятно, лучший инструмент для этого задания.

2
задан 11 October 2010 в 13:09
3 ответа

Какая-либо причина Вы не хотите использовать mod_rewrite?

Вы могли подражать функциональности с этим:

RewriteCond  %{REQUEST_URI}  !^/(somepath|someotherpath)
RewriteRule  (.*)                       $1                        [R=permanent]
RewriteRule  http://%{SERVER_NAME}(.*)  https://www.foobar.com$1  [L]

Я не понял, что Apache использует PCRE. Так как это делает, можно внести свою лепту вуду, чтобы сделать то, что Вы хотите с mod_alias:

RedirectMatch permanent ^/?((?!(thisisfoo|thisisbar)).*) https://www.foobar.com/$1

где/thisisfoo и/thisisbar являются исключениями к перенаправлению.

2
ответ дан 3 December 2019 в 11:09

Согласно документации (на http://httpd.apache.org/docs/2.2/mod/mod_alias.html#order ), Redirect обрабатываются в том порядке, в котором они встречаются. Таким образом, вам нужно сначала поставить более ограничительное правило, а затем - всеобъемлющее правило в конце.

1
ответ дан 3 December 2019 в 11:09

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

Мне нужно было перенаправить все, кроме двух папок, я назвал их files1 и files2 в приведенном ниже примере:

RedirectMatch Permanent "^ (/(?!(files1/|files2/)).*)" https://www.example.com$1

Точно так же слово permanent можно заменить на 301 что по сути то же самое («постоянный» в HTTP-коде) или с 302 (что означает временное перенаправление).

1
ответ дан 25 November 2020 в 08:19

Теги

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