.htaccess 리디렉션이 왜 HTTP에서는 작동하지만 https에서는 작동하지 않습니까? 때는 작동하지 않는 간단한 .htaccess 파일이 있습니다.

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]



답변

여기에는 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


답변

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

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

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


답변

“아파치 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


답변

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

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

ServerName domain.com

ServerAlias ​​www.domain.com


답변