.htaccess 리디렉션이 왜 HTTP에서는 작동하지만 https에서는 작동하지 않습니까?


10

http 버전의 사이트에서는 훌륭하게 작동하지만 https로 이동할 때는 작동하지 않는 간단한 .htaccess 파일이 있습니다. 왜?

RewriteEngine on
#This is so if the file exists then use the file
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ %{REQUEST_FILENAME} [L]

#These conditions check if a file or folder exists just for reference
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d

#if someone adds ".php" to the slug get rid of it
RewriteRule ^(.*)\.php$ $1  

#don't add the [R] here because we don't want it to redirect
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]

답변:


20

여기에는 100 % 충분한 정보가 없지만 일반적인 기본 SSL 설정 (예 : Red Hat / CentOS / Fedora)에서 SSL 용 VirtualHost는 자체 컨테이너에 설정됩니다. mod_rewrite를 사용하려면 최소한 "AllowOverride FileInfo"가 문서 루트에 설정되어 있어야합니다.

SSL 설정 (기본적으로 /etc/httpd/conf.d/ssl.conf)을 확인하고 다음과 같은지 확인하십시오.

DocumentRoot /var/www/html
<Directory /var/www/html>
  AllowOverride FileInfo
</Directory>

AllowOverride의 기본값은 '없음'이므로 FileInfo 기능을 추가하는 다른 설정 (예 : '모두')은 정상입니다.

http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride


1
내 리눅스에서 /etc/httpd/conf.d/ssl.conf를 볼 수 없습니다. 어떻게 찾을 수 있습니까?
Ashok KS

1
(1) conf 파일을 검색해야 할 수도 있습니다. 예를 들어 일부 시스템에서는 /etc/apache2/sites-enabled/default-ssl.conf다음 AllowOverride All과 같습니다 AllowOverride FileInfo. 작업이 완료되면 Apache AllowOveride문서를 자세히 읽고 액세스를보다 구체적으로 제한하여 보안을 최대화 할 수 있습니다. (3) 설정을 적용하려면 아파치를 다시 시작해야합니다.
SilentSteel

4

HTTPS 서버에 대해 mod_rewrite가 활성화되지 않았거나 .htaccess가 사용되지 않을 수 있습니까?

AllowOveride일반 사이트에 사용중인 권한을 확인하고 SSL 버전과 비교할 수 있습니다. 사고가 아닌 경우 보안을 개선하기 위해 도입되었습니다.

mod_rewrite 그래도 필수 옆에 있으므로 적절한 호스팅 제공 업체가이를 정리하는 데 도움이되어야합니다.


1

"아파치 2 + 우분투 작업"

Slim 프레임 워크를 사용 하고 URL에 필요한 index.php를 제거하는 동안 비슷한 문제가 발생했습니다 . reWrite는 http에서 완벽하게 작동했지만 https에서는 url을 찾을 수 없음을 표시하여 reWrite가 작동하지 않음을 의미했습니다.

hit-n-trial 후에이 솔루션을 찾았습니다.

 cd /etc/apache2/sites-enabled
 sudo vim default-ssl

AllowOverride None을 All로 변경합니다 . 마찬가지로 sudo vim ssl


0

비슷한 문제가 있었는데 이것이 나를 위해 일한 것입니다.

httpd.conf에 다음 두 가지가 모두 있는지 확인하십시오.

ServerName domain.com

ServerAlias ​​www.domain.com

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.