
다음 2개의 링크가 있습니다. .htaccess 규칙이 좋지 않습니다.아직.
Old URL: http://www.mywebsite.org.uk/donate/donate.php?charity_id=885&project_id=18111
New URL: http://new.mywebsite.org.uk/donation/to/885/18111
이전 URL에서 새 URL로 들어오는 모든 트래픽을 원합니다(매개변수 charity_id
& 포함 project_id
).
.htaccess 규칙을 배우려고 노력하고 있지만 온라인 튜토리얼이 다소 모호한 것으로 나타났습니다.
.htaccess 규칙에 대한 간단한 설명을 정말 듣고 싶습니다.
(사람에게 물고기를 주면 하루 동안 먹을 수 있다.사람에게 낚시하는 법을 가르쳐주고 평생 먹여살려라).
정답은 간단하고 유용한 설명이 포함된 답변입니다(가능한 경우 규칙도 함께!).
답변1
.htaccess 규칙을 설정하는 방법을 배우려면 최소한 약간의 정규식 기술이 필요하고 mod_rewrite Apache 모듈을 사용할 수 있어야 합니다. 유연성 덕분에 재작성 규칙을 구축하는 데 편리하기 때문입니다.
그렇다면 코드는 다음과 같을 수 있습니다.
RewriteEngine On
RewriteCond %{QUERY_STRING} ^charity_id=([0-9]+)&project_id=([0-9]+)$
RewriteRule donate/donate.php http://new.mywebsite.org.uk/donation/to/%1/%2? [L,R=301]
~에http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html(2.4 Apache 버전의 경우 해당되는 경우 다른 버전을 선택하세요)는 유용한 참조 자료이므로 위 코드를 더 잘 이해하려면 여기부터 시작해야 합니다.
를 다시 작성하기 위한 벽돌로 생각할 수 있으므로 RewriteRule
모든 규칙은 이를 최소한 한 번 사용합니다. RewriteCond
코드에서와 같이 환경 변수를 확인하거나 쿼리 문자열 값을 참조해야 하는 경우 이전에 추가할 것입니다 .
이전에서 오는 대체 문자열에 역참조를 배치하려면 from to 값을 RewriteCond
사용합니다 . 자체 의 첫 번째 부분에서 역참조가 필요한 경우 to 를 사용합니다 .%1
%9
RewriteRule
$1
$9
대체 URL 끝에 있는 물음표 기호에 주의하세요. 이는 쿼리 문자열을 건너뛰는 방법이기 때문입니다. 누락된 경우 ?charity_id=885&project_id=18111
새 URL 끝에 이 표시됩니다 .
답변2
다른 게시물에서 sysadmin1138은 모드 재작성에 대한 매우 훌륭한 소개를 작성했습니다.
게시물을 찾아보실 수 있습니다여기.
/편집: 예:
old: http://example.com/path?var=val
new: http://example.com/path/var/val
.htaccess
RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^/path /path/%1/%2?