AllowOverride all
を設定したいのですが、その方法がわかりません。 Googleを検索して次のコードを見つけ、.htaccess
に貼り付けました。
<Directory>
AllowOverride All
</Directory>
しかしそれを貼り付けた後、私は"Internal Server Error"
を受け取り始めました
誰かが私にこのコードをどこに置くべきか、あるいはそれをどうやってやるのか教えてもらえますか?
Ubuntuを使用している場合は、ファイル/etc/Apache2/Apache2.conf
を編集します(ここでは/var/www
の例を示します)。
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
そしてそれをに変更します。
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
それから、
Sudo service Apache2 restart
モジュールの書き換えを有効にするためにSudo a2enmod rewrite
を実行する必要があるかもしれません。
AllowOverride
の主な目的は、Apacheの主な設定ファイル(主に/ etc/Apache2 /にあります)の管理者が、アプリケーションによってパスごとに設定のどの部分を動的に変更できるかを決定することです。
あなたがサーバの管理者でないなら、あなたは AllowOverride theses adminsがあなたに許可している/ Levelに依存します。そのため彼らはあなたがいくつかの重要なセキュリティ設定を変更するのを防ぐことができます。
あなたがマスターApache設定マネージャであるならば、あなたはいつもAllowOverride None
を使い、そしてあなたが見つけるすべてのgoogle_based例をメインの設定ファイルのDirectory
セクションに移すべきです。 .htaccess
内の/my/path/to/a/directory
ファイルの.htaccessコンテンツは、<Directory /my/path/to/a/directory>
命令と同じですが、動的なHTTP要求ごとの.htaccess
の設定変更はWebサーバーの動作を遅くするものです。常に.htaccess
チェックのない静的な設定を優先してください(そして.htaccess
の変更によるセキュリティ攻撃も避けるでしょう)。
ちなみにあなたの例では<Directory>
を使っていて、これは常に間違っています。ディレクトリの命令は常に<Directory />
や<Directory C:>
あるいは<Directory /my/path/to/a/directory>
のようなパスを含んでいます。 .htaccess
はDirectory命令に似ていますが、このディレクトリに存在するファイルにあるため、もちろんこれを.htaccess
に入れることはできません。もちろん、この命令は.htaccess
ファイルの セキュリティレベル を管理しているので、.htaccess
内のAllowOverride
を変更することはできません。
ジャンプyour_severpath/Apache_ver/conf/
メモ帳でファイルhttpd.conf
を開きます。
この行を見つけます:
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
ハッシュ記号を削除します。
LoadModule vhost_alias_module modules/mod_vhost_alias.so
それから<Directory />
に行きます
そして、に変更します。
<Directory />
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
その後、ローカルサーバーを再起動します。
Linuxでは、ドキュメントルートへのアクセスを緩和するために、次のファイルを編集する必要があります。
/etc/httpd/conf/httpd.conf
また、どのディレクトリレベルにアクセスを制限したいかに応じて、ディレクティブを変更する必要があります。
AllowOverride None
に
AllowOverride All
そのため、/ var/www/htmlディレクトリのファイルへのアクセスを許可したいと仮定すると、以下の行を変更する必要があります。
<Directory "/var/www/html">
AllowOverride None
</Directory>
に
<Directory "/var/www/html">
AllowOverride All
</Directory>
Linuxを使用している場合は、次のディレクトリにあるコードを編集できます。
/etc/httpd/conf/httpd.conf
今ここでちょっと好きなコード行
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
AllowOveride Noneを AllowOveride All に変更します。
これで、他のオペレーティングシステムが httpd.conf のファイルを見つけて編集しようとした場合、ディレクトリ内の.httacessファイルにあらゆる種類の規則を設定できます。
他のユーザがここでallowoverideディレクティブの使用法について説明したように、それは.htaccessの使用法に対する許可を与えるために使用されます。他のユーザーが.htaccessを書くためのアクセス権を持っているなら、allowoverride allを決して使わないことを指摘したいのは、代わりにallowoverideを使って特定のモジュールを許可することです。
代わりにAllowOverride AuthConfig mod_rewrite
のように
AllowOverride All
なぜならmod_mimeのようなモジュールはあなたのサーバーサイドファイルをプレーンテキストとしてレンダリングすることができるからです。
httpd.conf
ファイルの代わりに.htaccess
ファイルに設定したいと思います。
どのOSを使っているのかよくわかりませんが、Ubuntuのためのこのリンクはあなたに何をすべきかについていくつかのポインタを与えるかもしれません。
https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles
私はこの問題にも遭遇し、私は以下の2つのステップとして解決策を見つけました。 wwwフォルダー内のkohanaプロジェクトで、 "example.htaccess"を ".htaccess"に名前変更します。
私はUbuntuでそれをやった。お役に立てば幸いです。
SuSE Linux Enterprise Server
正しいファイルを編集していることを確認してください https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_Apache2_configuration.html
httpd.conf
メインのApacheサーバー設定ファイル。 このファイルを変更しないでください。 主にincludeステートメントとグローバル設定を含みます。ここにリストされている関連構成ファイルのグローバル設定を上書きします。 仮想ホスト設定 でホスト固有の設定(ドキュメントルートなど)を変更します。
そのような場合はvhosts.d/*.conf
を編集しなければなりません