1

私はCodeIgniterを使用しており、SEOに適したURLを書き直そうとしています。目的は...

http://localhost/FOR-SEO/item/view/id
-> to -> http://localhost/item/view/id

(FOR-SEOを除外したいだけです)

私は次のようにhtaccessを追加しようとしました、

RewriteRule ^(.*)/item/view/(.*)$ /item/view/$2 [R,L]

だからそれは...

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteRule ^(.*)/item/view/(.*)$ /item/view/$2 [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

正常に動作しますが、[R]を取り出した後、404エラーが見つかりませんでした。

書き換えログを確認しようとしましたが、[R]ありと[R]なしですべて同じです。

これが[R](動作中)のログです

[rid#1009868a0/initial] (1) [perdir /Applications/MAMP/htdocs/himaparn/] escaping http://localhost:8888/item/view/2 for redirect
[rid#1009868a0/initial] (1) [perdir /Applications/MAMP/htdocs/himaparn/] redirect to http://localhost:8888/item/view/2 [REDIRECT/302]
[rid#10098a8a0/initial] (1) [perdir /Applications/MAMP/htdocs/himaparn/] internal redirect with /index.php/item/view/2 [INTERNAL REDIRECT]
[rid#100984da8/initial/redir#1] (1) [perdir /Applications/MAMP/htdocs/himaparn/] pass through /Applications/MAMP/htdocs/himaparn/index.php
[rid#1009978a0/subreq] (1) [perdir /Applications/MAMP/htdocs/himaparn/] internal redirect with /index.php/item/view/2 [INTERNAL REDIRECT]

これが[R]のないログです(機能していません)

[localhost/sid#100813108][rid#10098f8a0/initial] (1) [perdir /Applications/MAMP/htdocs/himaparn/] internal redirect with /item/view/2 [INTERNAL REDIRECT]
[localhost/sid#100813108][rid#100993a50/initial/redir#1] (1) [perdir /Applications/MAMP/htdocs/himaparn/] internal redirect with /index.php/item/view/2 [INTERNAL REDIRECT]
[localhost/sid#100813108][rid#100991828/initial/redir#2] (1) [perdir /Applications/MAMP/htdocs/himaparn/] pass through /Applications/MAMP/htdocs/himaparn/index.php
[localhost/sid#100813108][rid#1009978a0/subreq] (1) [perdir /Applications/MAMP/htdocs/himaparn/] internal redirect with /index.php/item/view/2 [INTERNAL REDIRECT]

これの何が問題になっていますか?これを機能させるためのより良い解決策はありますか?

どうもありがとう!

4

1 に答える 1

0

[R] これは、外部リダイレクトを強制するためだと思います。この場合、ベースはすでに設定されており、パスはリダイレクトエンドポイントのベースURLに追加されます。

したがって、を使用すると、[R]へのリクエストが追加されます。http://example.com/index.php/item/view/2/index.php/item/view/2http://example.com/http://example.com/index.php/item/view/2

あなたがいなければ[R]、内部リダイレクトを取得しています。これはリクエストに追加/index.php/item/view/2されます。したがって、リクエストhttp://example.com/index.php/item/view/2すると、http://example.com/index.php/item/view/2/index.php/item/view/2ネットが残ります404

ログに複数のリダイレクトがはっきりと表示されます。

...
[rid#100993a50 / initial / redir#1] ...
[rid#100991828 / initial / redir#2]
.....。

于 2013-03-25T17:51:08.007 に答える