URL 끝에 추가 슬래시를 추가하는 Apache mod_rewrite

URL 끝에 추가 슬래시를 추가하는 Apache mod_rewrite

저는 CentOS 6.0을 실행 중이고 mod_rewrite가 앞에 붙은 URL에서 www를 제거하도록 하려고 합니다. 내 httpd.conf에 있는 코드는 다음과 같습니다.

메모:전체 루트 액세스 권한이 있는 VPS를 사용하고 있으므로 .htaccess 파일이나 "디렉터리별" 설정을 사용하지 않습니다.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.aaronjwood\.com$
RewriteRule ^(.*)$ http://aaronjwood.com/$1 [R=301,L]

URL이 기록되는 것을 제외하고 모든 페이지에서 잘 작동합니다.http://aaronjwood.com//(두 개의 슬래시를 확인하세요) 또는http://aaronjwood.com//contact.php. 왜 이런 일이 발생하는지 알아내는 데 도움을 줄 수 있는 사람이 있나요?

답변1

<Directory>디렉터리별( 또는 ) 이 아닌 기본 구성 파일에 있으므로 .htaccess컨텍스트를 위해 선행 슬래시가 제거되지 않습니다. 실제로 모든 재작성에 두 번째 슬래시를 추가하거나 추가하려고 합니다. 대부분의 경우 Apache가 추가 항목을 제거하는지 또는 클라이언트 브라우저가 제거하는지 확실하지 않습니다.

일치하는 문자열에 선행 슬래시가 포함되어 있다는 사실을 고려하십시오.

RewriteRule ^/(.*)$ http://aaronjwood.com/$1 [R=301,L]

답변2

가상 호스트에 직접 있으므로 해결책은 다음과 같습니다. 여기서 슬래시를 제거하십시오.http://aaronjwood.com$1

또 다른 팁: 혼자일 때는 ^(.*)$와 같습니다 (.*).

해결책은 다음과 같습니다.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.aaronjwood\.com$
RewriteRule (.*) http://aaronjwood.com$1 [R=301,L]

효과가 있었는지 알려주세요.

올리비에

관련 정보