1

タイトルで言っていることをもう一度言いますが、ループを取得せずにすべての URL を書き換える方法が見つかりません。多くのオプションを試しましたが、リダイレクト ループを回避する方法が 1 つ見つかりません。

RewriteRule ^/(.+)  http://example.com/example/index.php$1  [R,L]                                                                                                                         
RewriteRule ^/?(.*) /var/www/example/index.php$1 [R]                                                                                                                              
RewriteRule ^/(.*)$ %{DOCUMENT_ROOT}/example/index.php$1 [R]  
RewriteRule ^$ /example/ [L]

以下は私のディレクトリapache-confです

<Directory /var/www/example>
  Options FollowSymLinks
  DirectoryIndex index.php
  Order allow,deny
  Allow from all
</Directory>

ループする理由は理解できますが、自分がやりたいことを実行するための適切なルールを想像できません (見つけることもできません!)。

編集

基本的に、OVH でホストされている example.fr を IP 仮想マシンにリダイレクトしています。これは私の問題に関係する可能性がありますか?

乾杯

4

2 に答える 2

3
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !^/example/
  RewriteRule (.*) /example/index.php/$1 [L,R]

これにより、 /example/ の外にあるものはすべて /example/index.php にリダイレクトされ、最後に元のパスが追加されます

編集:したがって、代わりにすべてをリダイレクトする場合は、「 example 」という単語をプロジェクト名の行と行の両方で/project_name/index.php交換する必要があります...RewriteCondRewriteRule

PS: ここのRewriteCond行は、書き換えがループしないようにするために必要です (したがって、/example/contactこれを試したときに URL が残っていました)。

于 2012-06-20T11:12:43.250 に答える
1

このルールによってループが発生することはありません

RewriteRule ^/(.+)  http://example.com/example/index.php$1  [R,L]

このルールは何もしません

RewriteRule ^/?(.*) /var/www/example/index.php$1 [R]

このルールでは、RewriteCond を追加する必要があります

RewriteCond %{REQUEST_URI} !^/example/
RewriteRule ^/(.*)$ %{DOCUMENT_ROOT}/example/index.php$1 [R]

これでいい

RewriteRule ^$ /example/ [L]
于 2012-06-20T11:15:42.403 に答える