web-dev-qa-db-ja.com

Laravelルートが機能していません。Apache構成ではpublic / index.php / routeのみが許可されています

例:

Route::get('/get', function() {
    return 'get';
});

上記のルートを表示するには、public/index.php/getに移動する必要があります。

私はかなりの数のSO投稿を見て、さまざまなことを試してみましたが、違いはありませんでした(はい、Apacheを毎回再起動します))。

パブリックディレクトリにある.htaccessは次のとおりです。

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
</IfModule>

# For all files not found in the file system, reroute the request to the
# "index.php" front controller, keeping the query string intact

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

これはまだ何が原因ですか? Ubuntuを実行しています。

20
user3817533

Mod_rewriteがインストールされ、Apacheで有効になっていますか? if行(および)を削除して、Webサイトをロードしようとしたときにエラーがスローされるかどうかを確認してください。存在する場合は、Sudo a2enmod rewriteを実行してApacheを再起動します。

これは、私のpublic /ディレクトリにある.htaccessです:

<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>
20
Eduardo Reveles

この動作の2つの最も一般的な原因は次のとおりです。

  1. mod_rewriteが有効になっていません

    Sudo a2enmod rewrite && Sudo service Apache2 restart

  2. AllowOverrideはNoneに設定され、Apache2.4を想定してAllに設定されます

    Sudo nano /etc/Apache2/Apache2.conf

検索する <Directory /var/www/>および変更AllowOverride NoneからAllowOverride All、ファイルを保存してApacheを再起動します

64
delmadord

AllowOverride NoneAllowOverride AllおよびSudo a2enmod rewrite && Sudo /etc/init.d/Apache2 reloadに変更すると役立ちました。

3
Mr CaT

MacOで。 .htaccessが機能しない主な問題は、Apache構成のhttpd.confファイルでmod_rewrite.soが有効になっていないことです。行のコメントを外すことでこれを解決しました:

LoadModule rewrite_module libexec/Apache2/mod_rewrite.so

上記の行httpdf.confから#を削除します。その後、動作します。楽しい!

0
Pramod yadav

.htaccessファイルを使用しない場合は、リダイレクト用のディレクトリを指定する必要があります。

  <IfModule mod_rewrite.c>
     RewriteEngine On

     <Directory /home/vitela/laravel/public>
      RewriteBase /public
      RewriteRule ^(.*)/$ /$1 [L,R=301]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ /index.php [L,QSA]
     </Directory>
  </IfModule>
0
JVitela

Apache構成ファイル/ etc/httpd/conf/httpd.confにあります(場所と名前は異なりますサーバー)、次のようにディレクトリを更新して、.htaccessファイルのAllowOverride権限を提供します。

<Directory "/var/www/laravel-sample-project/public">
   AllowOverride All
</Directory>

これにより、laravelルートで問題が解決する場合があります。

また、上記のようなディレクトリに限定され、ディレクトリ/ var/www/laravel-sample-project/public(ここで言及されているのは、私のプロジェクトのルートディレクトリであり、あなたによって異なる場合があります)

0
Tantrik