답변:
Include
지시문을 사용 httpd.conf
하여 다른 파일에서 리디렉션을 유지할 수 있습니다. 그러나 모든 요청을 많은 정규식과 대조하여 확인해야하므로 매우 효율적이지 않습니다. 또한 파일을 변경할 때마다 서버를 다시 시작해야합니다.
너무 많은 리디렉션에 대한 더 좋은 방법 은 유형의 RewriteMap 지시문 을 사용 하여dbm
URI에서 리디렉션으로 맵을 선언하는 것입니다. 이 방법은 dbm 조회가 매우 빠르기 때문에 효율적이며 맵을 변경 한 후 httpd
맵 파일 수정 시간 을 확인 하여 서버를 다시 시작할 필요가 없습니다 .
다시 쓰기 규칙은 다음과 같습니다 (Fedora 16 컴퓨터에서 테스트 됨).
RewriteEngine On
RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*)$ ${redirects:$1} [redirect=permanent,last]
그리고 dbm map은 다음 /etc/httpd/conf/redirects.txt
과 같은 텍스트 맵에서 생성됩니다 .
/foo http://serverfault.com/
/bar/lorem/ipsum/ http://stackoverflow.com/
명령을 사용하여
httxt2dbm -f db -i /etc/httpd/conf/redirects.txt -o /etc/httpd/conf/redirects.db
!=
그리고 ""
내가 작업에 내 예를 수정하고 현재 버전을 테스트 한 -.
RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
오류가 발생했습니다 RewriteMap dbm type db is invalid
. 그러나 내가 그것을 사용할 RewriteMap redirects txt:/etc/httpd/conf/redirects.txt
때 효과가있었습니다. 나는 여전히 일반 텍스트 대신 설명 된 것처럼 해시 된 방식으로 가고 싶습니다. 그러나 dbm 오류에 대해 많이 찾을 수 없었습니다. 당신의 도움을 주셔서 감사합니다.