Первым требованием было перенаправить трафик с http://www.old-domain.org
на https: // example. нажмите
- но только для корня домена; любая конкретная страница должна быть доступна в старом домене.
Итак, я немного изучил, и это сработало:
RedirectMatch "^/$" "https://example.press"
(что интересно, https://htaccess.madewithlove.be/ утверждал, что это не работает ...)
Затем пришел следующий запрос: также перенаправить другой URL в форме:
http://www.old-domain.example/site/index.php?act=news
, но таким образом, чтобы при запросе какой-либо конкретной новости не было перенаправления (например, http://www.old-domain.org/site/index.php?act=news&id=12345
)
Это оказалось очень сложной задачей. Во многих документах и статьях упоминалось, что это невозможно с директивами Redirect
/ RedirectMatch
, но возможно с RewriteCond
+ RewriteRule
, которые, как я понял, должны выглядят примерно так:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} act=news
RewriteRule ^(.*)$ https://example.press [R=302,L]
</IfModule>
(опять же, https://htaccess.madewithlove.be/ утверждает, что это работает)
Однако, похоже, ничего не работает. Никаких перенаправлений не происходит. Во многих документах и статьях упоминалось, что это невозможно с директивами Redirect
/ RedirectMatch
, но возможно с RewriteCond
+ RewriteRule
, которые, как я понял, должны выглядят примерно так:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} act=news
RewriteRule ^(.*)$ https://example.press [R=302,L]
</IfModule>
(опять же, https://htaccess.madewithlove.be/ утверждает, что это работает)
Однако, похоже, ничего не работает. Никаких перенаправлений не происходит. Во многих документах и статьях упоминалось, что это невозможно с директивами Redirect
/ RedirectMatch
, но возможно с RewriteCond
+ RewriteRule
, которые, как я понял, должны выглядят примерно так:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} act=news
RewriteRule ^(.*)$ https://example.press [R=302,L]
</IfModule>
(опять же, https://htaccess.madewithlove.be/ утверждает, что это работает)
Однако, похоже, ничего не работает. Никаких перенаправлений не происходит. Любые явно очевидные заблуждения с моей стороны, а?
Я считаю, что это сработает:
Есть два правила, и первое правило имеет два условия. Второе условие для первого правила использует оператор !
для отмены совпадения act = news & id = 12345
. Между условными операторами первого правила существует неявное «И», поэтому они оба должны быть истинными.
Второе правило соответствует только странице /
, без условий.