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
応答が返されます。たとえば、アクセスしようとした場合
応答は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
誰か私を助けてくれますか?
Apache2.4ディレクティブOrder
、Allow
およびDeny
は非推奨になり、新しい Require
構文に置き換えられました。
交換
Order allow,deny
Allow from all
と
Require all granted
あなたの設定で。 https://httpd.Apache.org/docs/current/upgrading.html を参照してください
mod_rewrite がサーバーで有効になっていないようです。 a2enmod
コマンド(/etc/Apache2/mods-enabled/rewrite.load
を指すシンボリックリンク../mods-available/rewrite.load
を作成します)を使用してモジュールを有効にしてから、サーバーを再起動します。
Sudo a2enmod rewrite
Sudo service Apache2 restart
有効なすべてのモジュールを一覧表示するには、a2query
コマンドを-m
フラグとともに使用できます。
a2query -m