web-dev-qa-db-ja.com

Apache / 2.4.18(Ubuntu)サーバーが特定のフォルダーの.htaccessによるRewriteEngineモードで動作していません

SlimでWeb APIプロジェクトを使用している間、ルートWebの下のAPIフォルダー.htaccess/v1を使用していました。私のOSはUbuntu 16.04で、Apache/2.4.18が付いています。 /v1フォルダーにのみ.htaccessを適用したいと思いました。 .htaccessファイルは次のようになります。

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

/v1フォルダー内のファイルにアクセスしようとすると、404応答が返されます。たとえば、アクセスしようとした場合

http:// localhost/project/v1/loadSomething

応答は404になります。

Not Found
The requested URL project/v1/loadSomething was not found on this server.
Apache/2.4.18 (Ubuntu) Server at localhost Port 80

私はこのような変更を加えるために編集しようとしました:

<Directory "/var/www/html">
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

しかし、この場合の応答は500です。

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

ログは次のようになります

[Sat Aug 10 21:16:11.356667 2019] [core:alert] [pid 4699] [client 127.0.0.1:33852] /var/www/html/project/v1/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
[Sat Aug 10 21:20:21.783996 2019] [core:alert] [pid 4700] [client 127.0.0.1:34374] /var/www/html/project/v1/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
[Sat Aug 10 21:20:40.368584 2019] [core:alert] [pid 4701] [client 127.0.0.1:34376] /var/www/html/project/v1/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

誰か私を助けてくれますか?

1
Jote
  1. Apache2.4ディレクティブOrderAllowおよびDenyは非推奨になり、新しい Require 構文に置き換えられました。

    交換

    Order allow,deny
    Allow from all
    

    Require all granted 
    

    あなたの設定で。 https://httpd.Apache.org/docs/current/upgrading.html を参照してください

  2. mod_rewrite がサーバーで有効になっていないようです。 a2enmodコマンド(/etc/Apache2/mods-enabled/rewrite.loadを指すシンボリックリンク../mods-available/rewrite.loadを作成します)を使用してモジュールを有効にしてから、サーバーを再起動します。

    Sudo a2enmod rewrite
    Sudo service Apache2 restart
    

    有効なすべてのモジュールを一覧表示するには、a2queryコマンドを-mフラグとともに使用できます。

    a2query -m
    
1
Freddy