WebサーバーにLumenをインストールしましたが、ルートに問題があります
// http://12.345.678.910/
$app->get('/', function() use ($app) {
return "This works";
});
しかし、この2番目のケースでは、彼はディレクトリを見つけることができません
// http://12.345.678.910/api
$app->get('/api', function() use ($app) {
return "This dont work";
});
2番目のケースでは、標準の404エラーが発生します。
The requested URL /api was not found on this server.
私はApache、Ubuntu、PHP 5.5およびLumenを使用しています
URLの書き換えが機能していないようです。 index.php
の直前に/api
をURLに追加すると、機能しますか?
たとえば、yourdomain.com/api
はyourdomain.com/index.php/api
になり、2番目のURLが機能する場合、書き換えは機能しません。
書き換えが機能していないが、public
ディレクトリに.htaccess
ファイルがある場合は、Apache構成でオーバーライドを許可する必要があります。これは、UbuntuでのLumenの仮想ホスト構成の例です。
変更する必要のある行にマークを付けました。 1番目と3番目を変更して、Webサイトのディレクトリのpublic
ディレクトリを指すようにします。次に、2行目をWebサイトで使用しているドメイン名に変更します。
<VirtualHost *:80>
DocumentRoot "/var/www/Lumen/public" # Change this line
ServerName yourdomain.com # Change this line
<Directory "/var/www/Lumen/public"> # Change this line
AllowOverride All # This line enables .htaccess files
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
これらの設定を有効にするには、Apacheを再起動する必要があります。
.htaccess
ファイルを有効にすると機能するはずですが、.htaccess
を使用するとサイトの速度が低下します。最善の解決策は、.htaccess
ファイルの内容を仮想ホストに配置してから、.htaccess
ファイルを無効にすることです。
そのための仮想ホスト構成の例は次のようになります。
<VirtualHost *:80>
DocumentRoot "/var/www/Lumen/public" # Change this line
ServerName yourdomain.com # Change this line
<Directory "/var/www/Lumen/public"> # Change this line
# Ignore the .htaccess file in this directory
AllowOverride None
# Make pretty URLs
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
</Directory>
</VirtualHost>
繰り返しますが、これらの設定を有効にするには、Apacheを再起動する必要があります。
アプリケーションのルートで、.htaccess
ファイルがまだ存在しない場合は作成します。次に、次のコードを貼り付けます。
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Apache
サーバーを使用していて、mod_rewrite
がオンになっていると仮定します。
Lumen documentation の基本構成セクションを読んでください。
mod_rewrite
をオンにする方法がわからない場合は、このstackoverflow post が役立つ可能性があります。
おそらく、public
フォルダーの下の.htaccessファイルがありません。これを確認してください: https://github.com/laravel/Lumen/blob/master/public/.htaccess