0

htaccessでこの問題が発生しました。CodeIgniter を使用し、リンクから「index.php」を削除しました:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(robots\.txt|sitemap\.xml)

RewriteRule ^(.*)$ /index.php/$1 [L]

これはうまくいきます。

しかし今、私は次のような古いリンクを含む古い Web を持っています。

http://www.example.com/index.php/about_us/article/70,about-us

それらは Google によってインデックスされます。それらを新しいリンク構造にリダイレクトしたいと思います。

htaccess を変更する必要があるため、上記のリンクは次のようなリンクにリダイレクトされます。

http://www.example.com/en/about_us/70,about-us

index.php」は削除され、問題ありません。「記事」は常にリンクに表示されるわけではなく、一部のリンクにのみ表示されますが、常にセグメントです。そして、すべての前に 'en' (言語) を追加する必要があります。

これどうやってするの?

4

2 に答える 2

0

これはあなたを近づけるはずです(テストされていない、あなたのために一緒に投げられただけです)。最初のルールを調整して、enセグメントが存在するかどうかを確認することをお勧めします。存在する場合、リダイレクトされた URL で二重になってしまうためです。

RewriteEngine On

# Redirect any URI's starting with "index.php" to new URI
RewriteRule ^index.php/(.*)$ http://www.example.com/en/$1 [R=301,L]

# Route URI's to index.php front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(robots\.txt|sitemap\.xml)
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
于 2013-05-17T22:12:05.527 に答える
0

これらを試してください。

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(robots\.txt|sitemap\.xml)
RewriteRule ^en/(.*)$ /index.php/$1 [L]

ルート.php

$route["about_us/(:any)"] = "about_us/article/$1";

URL ルーティングの詳細については、 URI ルーティングを参照してください。

于 2013-05-16T08:46:45.470 に答える