Отрицание нескольких RewriteCond в htaccess - PullRequest
1 голос
/ 21 января 2020

Я хочу перенаправить все IP-адреса, кроме моей страны, в подпапку. Это то, что я придумал.

RewriteEngine on
RewriteCond expr "-R '217.197.32.0/20'" [OR]
RewriteCond expr "-R '217.197.144.0/20'" [OR]
RewriteCond expr "-R '217.198.112.0/20'"
RewriteCond %{REQUEST_URI} !^/subfolder/ [NC]
RewriteRule ^(.*)$ http://example.com/subfolder/$1 [R,L]

(это всего лишь последние 3 строки списка IP-адресов.)

Он перенаправляет, но не правильно. Если вы иностранец, вы остаетесь в root, но если ваш IP совпадает, вы перенаправляетесь в подпапку.

Есть ли способ отменить это? Я пытался RewriteCond expr "! -R '217.197.32.0/20'" [OR] добавить ! к каждой строке RewriteCond, но тоже не повезло.

1 Ответ

0 голосов
/ 21 января 2020

Я пытался RewriteCond expr "! -R '217.197.32.0/20'" [OR] добавить ! к каждой строке RewriteCond, но тоже не повезло.

Если вы отмените условие, вам также потребуется удалить OR флаг (чтобы сделать его неявным И) для изменения логики c. (В противном случае условия всегда будут успешными ...! A или! B или! C всегда верны)

Вам не нужно условие, которое проверяет URL-путь - это должно быть включено вместо RewriteRule . (Или переместите это условие наверх.)

Например:

RewriteEngine on
RewriteCond expr "! -R '217.197.32.0/20'"
RewriteCond expr "! -R '217.197.144.0/20'"
RewriteCond expr "! -R '217.198.112.0/20'"
RewriteRule !^subfolder/ http://example.com/subfolder%{REQUEST_URI} [R,L]
...