2

このルートは一致しません:

 Route::get('/{cat}/',
    array('as' => 'article_cat', 'uses' => 'ArticleController@cat'))
    ->where('cat', $pattern_str);

末尾のスラッシュなしでルートが一致します。エラーの原因は Apache ではありません。末尾のスラッシュ URL でテストし、public/index.php の内容を置き換えました。大丈夫です domain.com/the-cat/ index.php コンテンツを表示します。ただし、Laravel4 では動作しません。

この問題に関する多くのメッセージと問題が見つかりましたが、解決策はありません。私のクライアントはこのタイプの URL を使用しており、サイトの新しいバージョン (通常) で URL を変更したくありません。

アイデアをお願いします。

4

1 に答える 1

0

Silex Micro-Framework はこれでより良い仕事をします - それはあなたが望むものを強制します (SEF 目的のため)。

Laravel にとって最善の策は、末尾のスラッシュなしでルートを宣言し、着信 URL にスラッシュを追加するように Apache に強制することです。

したがって、ルート定義は次のようになります。

Route::get('my/page' ...);

HyperText Access (.htaccess)RewriteRuleは次のようになります。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)([^/])$ http://%{HTTP_HOST}/$1$2/[L,R=301 ]

そのコード ブロックは、他のどのコード ブロックよりも先に来る必要があります。実行される最初のルールであってもよいのです。

そのため、 にアクセスするmy/pageと、 にリダイレクトされますmy/page/が、GET my/pageルートは読み込まれます。

(注: これは私のプロジェクトで機能します。Laravel のコード ベースが変更されているかどうかはわかりません。)

于 2013-07-28T06:43:39.670 に答える