1

すべての URL リクエストをフロント コントローラーに送信します。URL リクエストは次のようになりexample.com/controller/action/etcます。問題は、プログラム内で相対 URL を使用することです。これは、URL 要求にスラッシュが 1 つしかない場合は正常に機能しますが、スラッシュが複数ある場合は相対 URL が壊れます。

locationexample.com/controllerでは、相対 URLother-controllerが正常に機能し、ユーザーを に連れて行きexample.com/other-controllerます。

locationexample.com/controller/actionでは、ユーザーを に移動する相対 URLother-controllerが機能しませんexample.com/controller/other-controller

これを回避する方法に関する推奨事項はありますか? アプリでURLを作成するたびに、絶対パスやURL生成コードを使用せずにこれを実行できることを願っています。

問題が発生した場合に備えて、現在、この .htaccess コードを使用して、着信要求をフロント コントローラーにリダイレクトしています。

# Point all to index.php except existing files
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
4

1 に答える 1

1

現在のパスを確認して適切な数の を追加せずに、必要なことを行うには絶対 URL を使用する必要があります..。それぞれのドメインを取得する必要はありません。/controller/actionや などのURL を使用できます/other-controller/action。これらは、両方のコントローラーでシームレスに機能します。アンカー タグの例:

<a href="/controller/action">Do something!</a>

補足として、多くの場合、人々は URL を生成する関数を作成します。MVC フレームワークを使用している場合は、モデルにメソッドを追加し、get_absolute_url上記のフォームを返す関数を呼び出すという形式になる場合があります。

于 2011-10-04T20:38:50.933 に答える