web-dev-qa-db-ja.com

Apacheが動作しない.htaccess

私はLinux ubuntu上で実行しているAWS EC2サービスのサーバーを持っていて、Apache、php、そしてmysqlをインストールしました。

私は自分のドキュメントルート.htaccess/var/www/htmlファイルを追加しました。

このコードをErrorDocument 404 /var/www/html/404.phpと入力しましたが、まだ表示されていません。

私はこのコマンドを複数回入力し続けました:Sudo service httpd restartはサーバーを再起動しますが、変更は表示されません...

どうすればこれを解決できますか?私は何か間違ったことをしましたか?

前もって感謝します!

119
Shalin Shah

まず、httpdの再起動は.htaccessファイルには必要ありません。 .htaccessファイルは特にrootを持っていない人々のためのものです - すなわち、httpdサーバ設定ファイルへのアクセス権を持たず、そしてサーバを再起動することができません。サーバーを再起動できるので、.htaccessファイルは必要なく、メインのサーバー設定を直接使用できます。

次に、.htaccessファイルが無視されている場合は、AllowOverrideが正しく設定されていることを確認する必要があります。詳しくは http://httpd.Apache.org/docs/2.4/mod/core.html#allowoverride を参照してください。また、それが正しいスコープに設定されていることを確認する必要があります - すなわち、あなたの設定の正しいブロックに。例えば、あなたがではなくブロック内のものを編集していることを確認してください。

.htaccessファイルが実際に読み取られていることを確認したい場合は、ゴミを入れてください。 .htaccessファイルに "INVALID LINE HERE"などの無効な行があると、ブラウザでそのファイルが含まれているディレクトリをポイントすると500サーバーエラーになります。そうでない場合は、AllowOverrideが正しく設定されていません。

253
Rich Bowen
  1. Apache mod_rewriteモジュールを有効にする

    a2enmod rewrite

  2. 次のコードを/etc/Apache2/sites-available/defaultに追加します

    AllowOverride All

  3. Apacheを再起動します

    /etc/init.d/Apache2 restart

102

上記のことをすべて試してみましたが、それはすべて有効で良い答えであり、htaccessファイルが機能していないかまたは読み取られていない場合は、Apache2.confファイルのディレクティブを変更してください。 Ubuntuでは、パスは/etc/Apache2/Apache2.confです。

Htaccessファイルがある公開Webページを指す<Directory>ディレクティブを変更します。 AllowOverride NoneからAllowOverride Allに変更

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

私は同じ問題を抱えていて、Ubuntu Askに答えと説明を見つけました!フォーラム https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working

37
user1946891

にとって ウブントゥ、
まず、このコマンドを実行します。 -

Sudo a2enmod rewrite

次に、nanoまたはvimを使用してファイル/etc/Apache2/sites-available/000-default.confを編集します。 -

Sudo nano /etc/Apache2/sites-available/000-default.conf

次に000-default.confファイルで、DocumentRoot /var/www/html行の後にこれを追加します。あなたのルートHTMLディレクトリが他の何かであるならば、それからそれを書いてください -

<Directory "/var/www/html">
  AllowOverride All
</Directory>

すべての作業を終えたら、コマンドSudo service Apache2 restartを使用してApacheを再起動します。

18
khandelwaldeval

ちょうど3つのステップに従ってください

  1. 次のコマンドでmode_rewriteを有効にします

    Sudo a2enmodの書き換え

パスワードが求められます。パスワードを入力してください

  1. / etc/Apache2/sites-available/ディレクトリにある0-default.confまたはdefault.confファイルを更新します。直接編集することはできません。それで開くために次のコマンドを使用してください

    Sudo gedit /etc/Apache2/sites-available/000-default.conf

またはSudo gedit /etc/Apache2/sites-available/default.conf

あなたは得るでしょう

DocumentRoot/var/www/html

OR

DocumentRoot/var/www

ライン。その後に次のコードを追加してください。

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ユーザーにディレクトリタグパスをファイルに表示されているものと同じにします。

  1. 次のコマンドを使ってApacheサーバーを再起動します。

    SudoサービスApache2の再起動

5

ほとんどの場合、AllowOverrideはNoneに設定されています。/etc/Apache2フォルダーにあるApache2.confのDirectoryセクション内

AllowOverride Allに設定してみてください

5
KawaiKx

私の経験では、/ var/www/directoryディレクティブはサブフォルダvirtualhostディレクティブを防ぎます。あなたがすべての提案を試してもまだうまくいかず、あなたが仮想ホストを使っているのなら、これを試してください。

1 - AllowOverride All/etc/Apache2/sites-available/example.com.confディレクティブがあることを確認してください

2 - /etc/Apache2/Apache2.conf内の/ var/www/Directoryディレクティブをチェックします(おそらく164行目)。

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

AllowOverride Noneディレクティブがある場合は、それをAllowOverride Allに変更するか、単にエスケープする

4

デフォルトでは、Apacheは書き換え規則を適用するために.htaccessファイルを使用することを禁じています。

ステップ1 - mod_rewriteを有効にする(有効でない場合)まず、mod_rewriteを有効にする必要があります。利用可能ですが、クリーンなApache 2インストールでは有効になりません。

$ Sudo a2enmod rewrite

これはモジュールをアクティブにするか、またはモジュールが既に有効になっていることを警告します。これらの変更を有効にするには、Apacheを再起動してください。

$ Sudo systemctl restart Apache2

mod_rewriteが完全に有効になりました。次のステップでは、リダイレクトの書き換え規則を定義するために使用する.htaccessファイルを設定します。

ステップ2 - .htaccessの設定nanoまたはお好みのテキストエディタを使用して、デフォルトのApache設定ファイルを開きます。

$ Sudo nano /etc/Apache2/sites-available/000-default.conf

そのファイルの中に、最初の行から始まるブロックがあります。そのブロックの内側に、設定ファイルが次のようになるように、次の新しいブロックを追加します。すべてのブロックが正しくインデントされていることを確認してください。

/etc/Apache2/sites-available/000-default.conf

<VirtualHost *:80>
    <Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    . . . 
</VirtualHost>

ファイルを保存して閉じます。これらの変更を有効にするには、Apacheを再起動してください。

$ Sudo systemctl restart Apache2

完了しました。あなたの.htacessはうまくいくはずです。 このリンクは実際に誰かに役立つかもしれませんhttps://www.digitalocean.com/community/tutorials/how-to-rewrite-urls- with-mod_rewrite-for-Apache-on-ubuntu-16-04

2
Abayomi Israel

この使用をクリアしました。このサイトを使用して ここをクリック

1
Raghul Shree

WampServer内WampServer Tray icon ----> Apache ---> Apacheモジュール---> rewrite_module

1
Burusothman

あなたの.htaccessにRewriteBase/{あなたのフォルダ} /を使う

0