mod_rewriteは有効ですが、動作していません


17

PHPルーティングライブラリをセットアップしようとしています。.htaccessファイルのこの例を示します。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

これを機能させることができなかったため、mod_rewriteを有効にしようとしましたが、「モジュールの書き換えは既に有効になっています」と表示されます。

なぜ正しく動作しないのですか?ありがとう!Ubuntu Precise 12.04とapache2.2.22を実行しています。(更新を確認)

編集:さらにいくつかの詳細、それはPuPHPet vagrantビルドであり、書き換えを有効にする必要があります。

回答:


33

上書きを許可する必要があります。

<Directory "/path/to/document/root/">
  AllowOverride All
  Allow from All
</Directory>

5
これは不必要に寛容です。AllowOverride問題の構成にのみ必要です。 Allow from All質問とは関係がなく、@ randomdevの環境には適切でない可能性があります。
マーク

1
<Directory "/path/to/document/root/">/path/to/document/root/プロジェクトのルートに変更するのを忘れました。ありがとう!
アビシェーク

16

まず、httpdの設定をこれに設定します(パスは互いに異なる場合があります。ubuntuでは、/ etc / apache2 / sites-available / defaultに配置されます)。

DocumentRoot /var/www

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
</Directory>

その後、次のコマンドでmod_rewrite有効にする必要があります。

sudo a2enmod rewrite

最後に、Apacheサービスを再起動します

sudo service apache2 restart

それを確実にするために、あなたからそれを再度確認することができますするphpinfo構成> apache2handler>モジュールがロードされてそこに書かれなければならないmod_rewrite、それはmod_rewriteのが有効であることを意味します。


これは仮想ホスト要素にあるべきですか?
jjxtra


1

私は同様の問題を抱えていましたが、他の答えは私を助けませんでした。.htaccess私の問題を解決した最初の次の行:

Options +FollowSymLinks -MultiViews
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.