1

解決しました:)

RewriteCond %{THE_REQUEST} index.php
RewriteRule index.php(.*)$ http://%{HTTP_HOST}$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]

http://example.com/controller/actionを開き、ModRewriteがリクエストを... index.php / controller/actionにルーティングできるようにリダイレクトを構成しました。

ここで、ユーザーがhttp://example.com/index.php/controller/actionを自動的にindex.php / controller / action(301リダイレクト)に開いた場合に、ユーザーをリダイレクトしたいと思います。しかし今、私はリダイレクトの無限のループを取得します。

ブートストラップindex.phpへの内部リダイレクトを分離して、1人のユーザーがindex.phpサブパスでURLを開くことができないようにする機会はありますか?

私はこれを試しましたが、それは機能しません(ループがない場合):

 RewriteCond %{REQUEST_URI} index.php/(.*)
 RewriteRule ^index.php/(.*)/$ http://%{HTTP_HOST}/$1/ [L,R=301]

 RewriteCond %{REQUEST_FILENAME} !-d 
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ /index.php/$1 [L]
4

1 に答える 1

0

PHP 側でこれを解決する一般的な方法は、リダイレクトごとにインクリメントするカウンターを用意することです。例: https://github.com/vjousse/symfony-1.4/blob/master/lib/controller/sfController.class.php

if ($this->getActionStack()->getSize() >= $this->maxForwards)
{
  // let's kill this party before it turns into cpu cycle hell
  throw new sfForwardException('Too many forwards have been detected for this request.');
}
于 2012-10-24T20:21:12.600 に答える