1

これは私の最初のリクエストであり、うまくいけば誰も動揺させません。

これが私の話です:

私は解決策を求めてこの場所全体を見てきましたが、見つけることができませんでした。誰かが何らかの情報を提供できることを願っています。

基本的に、Apache のmod_rewriteを使用して、Web サイトの SEO フレンドリーな URL を作成することができました。

たとえば、古いパスwww.hostname/index1.php?session=userはwww.hostname/userに書き換えられ、SEO フレンドリーな URL アドレスになります。

ただし、古いパスは引き続き有効です。検索エンジンがリンクの人気を新しい URL に転送できるように、着信するすべての古いindex1.phpリクエストを新しい URL (SEO に適した URL)に何らかの方法でリダイレクトする必要があります。無限ループのリダイレクトが発生している可能性があるため、機能していません。

これまでの私のコード:

Options +FollowSymLinks
RewriteEngine On
RewriteBase / 

## Redirect still valid old links to SEO friendly ones
RewriteRule ^/?index1\.php\?session=user$ /user [R=301]

## Catch the above and rewrite the URL 
RewriteRule ^/?user/?$ /index1.php?session=user [QSA,L]

上記のルールは、 htaccessファイルが解析されるときにヒットすることはありません。

ここである種のリダイレクト ループを実行している可能性があるので、index1.phpファイルの名前をindex2.phpに変更して、次のようなファイルを作成することを考えました。

## Redirect still valid old links to SEO friendly ones
RewriteRule ^/?index1\.php\?session=user$ /user [R=301]

## Catch the above and rewrite the URL 
RewriteRule ^/?user/?$ /index2.php?session=user [QSA,L]

しかし、それも失敗しました。

これに対する最善のアプローチは何ですか?ここで何が間違っていますか?

ありがとうございました!

4

2 に答える 2

1

.htaccessルールを次のように更新します

Options +FollowSymLinks
RewriteEngine On
RewriteBase / 

## Redirect still valid old links to SEO friendly ones
RewriteCond %{QUERY_STRING} !no-redir [NC]
RewriteCond %{QUERY_STRING} session=user [NC]
RewriteRule ^/?index1\.php$ /user? [R=301,NC,L]

## Catch the above and rewrite the URL 
RewriteRule ^/?user/?$ /index1.php?session=user&no-redir [QSA,NC,L]
于 2013-08-21T05:26:41.477 に答える