70

Composerを使用してLaravel4をインストールし、仮想ホストもセットアップしました。現在、ルートルートのみが機能しています。

<?php

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

これではありません:

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

私がヒットしようとしているTasksControllerのは/tasks

Route::resource('tasks', 'TasksController');

これは私にも404エラーを与えています。何が間違っているのでしょうか?プロジェクトのルートにデフォルトの.htaccessファイルがあります。

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Macでローカルホストを使用しています。

4

19 に答える 19

112

笑いのために、うまくいくかどうか見てください/index.php/hello

もしそうなら、おそらくそれは.htaccess問題です。

于 2012-11-22T14:54:41.703 に答える
40

WAMP(Windows 8)でLaravel 4を実行すると同じ問題が発生しました。
私のために働いた解決策は次のとおりです。

  1. Apache httpd.conf を開き、次の行を見つけます。

    #LoadModule rewrite_module modules/mod_rewrite.so
    
  2. この行のコメントを外します (を削除します#)
  3. 保存httpd.conf
  4. WAMPを再起動

それは動作するはずです!

于 2013-05-31T19:04:27.133 に答える
30

私は同じ問題を抱えていましたが、解決策はApache2で書き換えmodを有効にすることでした

ターミナルで次のコマンドを使用します。

$ sudo a2enmod rewrite
$ sudo service apache2 restart

そして魔法!

于 2014-10-22T12:35:38.830 に答える
18

まったく同じ問題がありました。

これを修正するには、次の 2 つのことを行う必要がありました。

  1. Apache でrewrite_moduleを有効にする
  2. AllowOverrideを None からAllに変更します。例 (Apache 2.4.9):

    <Directory "c:/www">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    

参考までに:
WAMP の代わりに、Laravel Homestead を VirtualBox および Vagrant と一緒に使用してください。Apache の代わりに Nginx が含まれていますが、Laravel 用に明示的に構成されているため、すべてがデフォルトで機能します。

于 2015-01-17T11:22:58.607 に答える
8

これらすべてを試してみましたが成功しませんでしたが、別の投稿を見つけて .htaccess を次のように変更しました:

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /index.php [L]
</IfModule>
于 2015-03-08T06:32:15.560 に答える
6

home 以外のものを定義するときは / は必要ありません。

Route::get('hello', function()
{
    return View::make('hello');
});

動作するはずです。

于 2012-11-22T14:45:22.977 に答える
5

@GaryJと@MartinGomezが言ったようなものです。これは、Apache サーバーで実行されているすべての laravel 4 プロジェクトのpublicフォルダーに設定する必要がある.htaccessの内容です。

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    RewriteBase /

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
于 2014-11-13T12:49:06.883 に答える
4

前回の回答に少し誤りがありました。これは役立つかもしれません。

$ sudo a2enmod rewrite
$ sudo service apache2 restart

そう願っています。

于 2015-01-15T14:02:07.157 に答える
4

Laravel 4 は静的ファイルのマップからファイルを自動ロードするため、新しいコントローラーを追加するときにそのファイルを更新する必要があります。次のコマンドを実行して、静的ファイルを再構築します。

php composer.phar dump-autoload
于 2012-11-24T14:47:14.507 に答える
3

「mod_rewrite」が原因で問題が発生することは明らかです。場合によっては、Apache でこのモジュールを有効にするだけで修正できます。

ただし、私の場合、VirtualHost の構成を次のように拡張する必要がありました。

<VirtualHost *:80>

    ServerName adplus.local

    ServerAdmin sergey.donchenko@gmail.com
    DocumentRoot /var/www/adplus.local/project/public

    **<Directory "/var/www/adplus.local/project/public">
        AllowOverride All
    </Directory>**

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
于 2015-01-28T07:15:59.873 に答える
3

私はこの問題を抱えていました (Apache 2.2 を手動でインストールした Windows で)。原因は、AllowOverridehttpd.conf のルート ディレクトリがデフォルトで None に設定されていたため、私の VirtualHost が見つからないことでした。

FileInfo Options=MultiViewsLaravel の .htaccess に必要な最小限のセットです

例えば

<VirtualHost *:80>
    DocumentRoot "C:/htdocs/domain.com/laravel/public"
    ServerName foo.domain.com

    <Directory "C:/htdocs/domain.com/laravel/public">
        AllowOverride FileInfo Options=MultiViews
    </Directory>
</VirtualHost>

またはAllowOverride All、これが機能せず、セキュリティを気にしない場合に使用します。

于 2014-08-02T06:57:10.563 に答える
2

に行く

nano /etc/nginx/sites-available/yoursites

try_file を見つけて、以下のように置き換えます。

try_files $uri $uri/ /index.php?$query_string;

于 2016-12-23T15:04:04.153 に答える
0

このアップデートは私にとってはうまくいきました。.htaccess ファイルで、Rewriterules を有効にした後、以下を追加するだけです。

Options -Indexes
Options +FollowSymLinks

魅力のように働いた

于 2015-01-15T02:08:07.513 に答える
-1

このコメントは少し遅れるかもしれませんが、役立つかもしれません。次のような別のビューにルーティングするときに、同じ問題が発生しました。

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

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

しかし、うまくいかなかったので、関連するすべての投稿で見つけたすべてを試しましたが、問題を解決するには不十分だったので、httpd.confで次の行を見つけました:

<Files ".ht*">
Require all denied
</Files>

そこで、「拒否」を「許可」に変更し、.htaccess に次の行をコメントしました。

#RewriteBase /

そして働いた!! この行により、Apache はプロジェクトの .htaccess ファイルを考慮しないようになるため、それを許可にすると違いが生じたと思います。これが同じ問題を抱えている人に役立つことを願っています。

Apache Server 2 @ Manjaro Linux (Archlinux ベース) での作業

于 2016-09-13T22:45:55.430 に答える