突然、私は_http://example.localhost/javascript/jquery.min.js
_のようなファイルに対して404を取得し始めました
以前はすべてうまくいきました。少なくとも手動ではなく、構成を変更しませんでした。
しかし、_/javascript
_ディレクトリ自体にアクセスしようとすると、Apacheエラーログに"Cannot serve directory /usr/share/javascript/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
が表示されます。
スタックオーバーフローでこれに対する解決策を見つけようとしましたが、できませんでした。したがって、誰かが同じ問題に遭遇した場合、私はこれをここに残します。
それでは、なぜVirtualHostで構成したのではなく、/ usr/share/javascriptで地獄を探すのでしょうか。それを理解するために、私は次のようなことをしました:
$ cd /etc/Apache2
$ grep -R Alias * | grep share
...
conf-enabled/javascript-common.conf:Alias /javascript /usr/share/javascript/
...
その構成ファイル名をグーグル検索した後、私は いくつかの説明 を見つけました。
理由はわかりませんが、 javascript-common パッケージをインストールしました。それを取り除くことは害がないように見えるので、$ Sudo apt-get purge javascript-common
問題を解決しました。
JavaScriptを使用するWebアプリケーションは、HTTP経由でJavaScriptを配布する必要があります。すべてのスクリプトに共通のパスを使用すると、すべてのパッケージのHTTPサーバーでこのパスを有効にする必要がなくなります。
これは、/usr/share/javascript
エイリアスを作成し、Apache Webサーバーで有効にするパッケージです。
以上です。あなたはjavascriptディレクトリで他の問題を抱えることはないでしょう。もう1つの修正は、/usr/share/javascript/
を/usr/share/javascript-common/
に名前を変更し、名前を変更したディレクトリを指すようにjavascript-common.conf
のエイリアスを調整することです。これが将来のアップデートに影響するかどうかはまだわかりません。
/etc/Apache2/conf-available/javascript-common.conf
にアクセスします。あなたはこれを見つけるでしょう:
Alias /javascript /usr/share/javascript/
<Directory "/usr/share/javascript/">
Options FollowSymLinks MultiViews
</Directory>
したがって、禁止されているエラーを回避するには、これらの行にコメントを付ける必要があります(#
charを使用)(conf対応のファイルを直接編集することはお勧めしません)。その後、これを行います:
a2disconf javascript-common
a2enconf javascript-common
Confファイルを編集したり、パッケージをパージしたりする必要はありません。無効にするだけです。
a2disconf javascript-common
service Apache2 reload
何らかの理由でその設定を使用したい場合:
a2enconf javascript-common
service Apache2 reload
Debian マシンを使用していて、a2disconfコマンドがありません。 /etc/Apache2/conf.d
ディレクトリは/etc/javascript-common/javascript-common.conf
へのリンクであることがわかりました。
私はそのファイルを(rootとして)編集して、先頭行を次のように変更することにより、/javascript-common
ではなくエイリアス/javascript
に変更しました
Alias /javascript-common /usr/share/javascript/
保存してApacheを再起動します。
Ubuntuシステムでも同様の問題が発生しました。どうやらjavascript-common
パッケージはある時点でホースされ、configureスクリプトが正しく実行されなかったようです。 javascript-common
を削除してapt-getで再インストールしても修正されません。そうしなければならなかった:
dpkg --purge javascript-common
apt-get install javascript-common
そして、それで問題が解決したようです。これは buntu 16.04 LTS(Xenial Xerus)システムで、 buntu 14.04 LTS(Trusty Tahr)からアップグレードされています。