.htaccessリダイレクトがhttpでは機能するが、httpsでは機能しないのはなぜですか?


10

単純な.htaccessファイルがあり、httpバージョンのサイトでは適切に機能しますが、httpsにアクセスすると機能しません。どうして?

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
Linuxで/etc/httpd/conf.d/ssl.confが表示されません。それを見つける方法は?
Ashok KS

1
(1)confファイルを検索する必要がある場合があります。たとえば、一部のシステムでは/etc/apache2/sites-enabled/default-ssl.conf(2)明確にするために、問題が解決しない場合は、のAllowOverride All代わりに試してくださいAllowOverride FileInfo。それが機能するようになったら、ApacheのAllowOverideドキュメントを詳細に読んで、アクセスをより具体的に制限し、セキュリティを最大化できます。(3)設定を有効にするには、Apacheを再起動する必要があります。
SilentSteel

4

HTTPSサーバーでmod_rewriteが有効になっていないか、.htaccessが使用されていない可能性がありますか?

AllowOveride通常のサイトで使用されている権限を確認し、SSLバージョンと比較してください。おそらく、事故ではないとしても、セキュリティを向上させるために導入されました。

mod_rewrite ただし、次は必須の要素なので、適切なホスティングプロバイダーであればこれを解決するのに役立ちます。


1

「apache2 + ubuntuの正確な作業」

Slimフレームワークを使用していて、URLに必要なindex.phpを削除しようとしたときに、同様の問題が発生しました。reWriteはhttpでは完全に機能しましたが、httpsでは機能しませんでした。URLが見つからないことを示していたため、reWriteは機能していませんでした。

いくつかのヒットアンドトライアルの後、私はこの解決策を思いつきました:

 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.