web-dev-qa-db-ja.com

ルーメンシンプルルートリクエストが機能しない

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を使用しています

12
Ivan Vulović

URLの書き換えが機能していないようです。 index.phpの直前に/apiをURLに追加すると、機能しますか?

たとえば、yourdomain.com/apiyourdomain.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を再起動する必要があります。

15
BrokenBinary

アプリケーションのルートで、.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 が役立つ可能性があります。

2
Subash

おそらく、publicフォルダーの下の.htaccessファイルがありません。これを確認してください: https://github.com/laravel/Lumen/blob/master/public/.htaccess

2
llioor