첫 번째 요구 사항은 트래픽을 에서 로 리디렉션하는 것이었지만 http://www.old-domain.org
도메인 https://example.press
루트에 대해서만 그렇게 해야 했습니다. 특정 페이지는 이전 도메인에서 사용할 수 있어야 합니다.
그래서 나는 약간의 연구를 했고 이것이 효과가 있었습니다:
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/효과가 있다고 주장함)
그러나 아무것도 작동하지 않는 것 같습니다. 리디렉션이 발생하지 않습니다. 내 입장에서 눈에 띄게 명백한 오해가 있습니까?
답변1
나는 이것이 효과가 있을 것이라고 믿습니다:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} act=news RewriteCond %{QUERY_STRING} !act=news&id=12345 RewriteRule ^(.*)$ https://example.press/ [R=302,L] RewriteRule ^/$ https://example.press/ [R=302,L] </IfModule>
두 가지 규칙이 있으며 첫 번째 규칙에는 두 가지 조건이 있습니다. 첫 번째 규칙의 두 번째 조건은 연산자를 사용하여 !
일치를 무효화합니다 act=news&id=12345
. 첫 번째 규칙의 조건 사이에는 암시적인 "AND"가 있으므로 둘 다 참이어야 합니다.
그런 다음 두 번째 규칙은 /
조건 없이 페이지와만 일치합니다.