1

私はこの動的リンクを持っています:

http://www.nortedigital.mx/article.php?id=36175&t=dobla_las_manos_el_snte__avala_reforma_educativa

そして、次のように URL フレンドリーに変換する必要があります。

http://www.nortedigital.mx/36174/se_enriquecio_elba_en_sexenios_del_pan.html

そして私はこのRewriteRuleを持っています:

RewriteRule ^([^/]*)/([^/]*)\.html$ /article.php?id=$1&t=$2 [L]

しかし、うまくいきません。お願いします、誰か助けてくれませんか?

4

1 に答える 1

1

RewriteCond でクエリ文字列を取得し、それを RewriteRule で使用する必要があります。

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=(\d+)&t=(.+)$
RewriteRule ^/?article\.php$ /%1/%2.html? [R,L]

これにより、クライアントがリクエスト ie にリダイレクトされます/36174/se_enriquecio_elba_en_sexenios_del_pan.html。次に、実際のページをサーバーする必要があります。そのために、質問にすでにあるものと同様の追加のルールを追加します

RewriteRule ^/?(.+?)/(.+?)\.html$ /article.php?id=$1&t=$2 [L]

しかし今、エンドレス リダイレクト ループがあります。環境変数を使用してこれを破ります。ここに完全なルールセット全体があります

RewriteEngine On

RewriteCond %{ENV:REDIRECT_SEO} ^$
RewriteCond %{QUERY_STRING} ^id=(\d+)&t=(.+)$
RewriteRule ^/?article\.php$ /%1/%2.html? [R,L]

RewriteRule ^/?(.+?)/(.+?)\.html$ /article.php?id=$1&t=$2 [L,E=SEO:1]

このルールは、環境変数が設定されていない限り、上記のようにリダイレクトを行います。そして、ループを防ぐために、実際のページを提供article.phpし、同時に環境変数を設定します。

この目的のためにクッキーを使用することもできます。ただし、クライアントで Cookie が無効になっていると、これは機能しなくなります。

于 2013-03-01T19:54:41.073 に答える