2

私はこのようなURLを持っています:

http://my.site/apps/123

リダイレクトしたい

http://my.site/app/123

mod_rewriteを使用します。ただし、この.htaccessを使用すると:

RewriteEngine on
RewriteCond $1 !^(index\.php)
RewriteRule ^/apps/(.*)$ /app/$1 [R=301,L]
RewriteRule ^(.*)$ /index.php?/$1 [L]

ログに500とこのエラーが表示されます。

Request exceeded the limit of 10 internal redirects due to probable configuration error. 
Use 'LimitInternalRecursion' to increase the limit if necessary. 
Use 'LogLevel debug' to get a backtrace.
[Thu Sep 13 12:58:13 2012] [debug] core.c(3112): [client 127.0.0.1] r->uri = /index.php

ブラウザの最終的なURLは次のようになります。

http://my.site/app/123?/apps/123

ApacheがURLに?/ apps / 123を追加するのはなぜですか?

これを回避できれば、ここで無限再帰の問題を回避できると思います。

4

1 に答える 1

1

my.site/apps/123をmy.site/app/123にリダイレクトする場合は、次を使用します。

RewriteEngine on
RewriteBase /
RewriteRule ^apps/(.*)$ app/$1 [L,R=301]

編集 :

間違った場所にルールを追加しました。ルールの代わりにこれを試してください:

RewriteEngine on
RewriteBase /
RewriteRule ^apps/(.*)$ app/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !^index\.php
RewriteRule ^(.*)$ index.php?/$1 [L]
于 2012-09-13T12:27:08.313 に答える