0

サイトを作り直したばかりで、URL を新しい構造に変更するためにいくつかの書き直しを開始しようとしています。ペアの親切なサポートのおかげで、私はほとんどそこにいますが、彼らはそのような問題に対処することになっていないことを知っているので、ここでパズルの最後のピースを手に入れることができることを願っています.

やりたいことは4つあります。

  1. スペースをアンダースコアに変換します。
  2. "(2003)" を "- 2003" に変更して、括弧を削除します。
  3. html 呼び出しの構造を変更します。
  4. リダイレクトを強制して、検索エンジンが新しいアドレスを取得できるようにします。

今、これは私が持っているものです:

RewriteEngine On
Rewritecond %{HTTP_HOST} ^(desktopscenes.com|www.desktopscenes.com)$ [nc]
RewriteRule ^(.*)\s(.*)$ $1_$2 [N]
RewriteRule ^(.*)\((.*)$ $1-_$2
RewriteRule ^(.*)\)(.*)$ $1$2
RewriteRule ^(.*)slides/(.*)\.html$ /$1index.htm#$2.jpg [NE,R=301]

内部で適切にリダイレクトされるjpgファイルへのリンクを除いて、すべてが機能しますが、アドレスバーに適切な新しいアドレスを表示する方法が見つかりません。

たとえば、この古い URL は次のとおりです。

http://www.desktopscenes.com/Scenes from Big Sky Country (2003)/slides/First Montana Sunset.jpg

次の場所に画像を適切に表示します。

http://www.desktopscenes.com/Scenes_from_Big_Sky_Country_-_2003/slides/First_Montana_Sunset.jpg

しかし、ブラウザー バーには新しいアドレスが表示されません。これは、検索エンジンに新しいアドレスが通知されていないことも意味していると思います。

「R=301」で「同じアドレスへのリダイレクト」を試みましたが、おそらくループが原因で失敗しました。他に何を試すべきかわからない、何かアイデアはありますか?

4

1 に答える 1

0

最初の 3 つのルールの反復プロセスに問題があるよう[L]です。それらにフラグを追加してみてください。

2番目の問題は、最後のルール(「スライド」を含む)の正規表現がhtmlと一致するが、 jpgを指定していることです。

3 番目の問題はRewriteCond、最初のルールにのみ適用されることです。RewriteConds は、直後の にのみ適用されますRewriteRule。それらはグローバルには適用されません。

したがって、ルールを次のように変更してみてください。

RewriteEngine On

# if the host isn't "desktopscenes.com", pass through and do nothing
Rewritecond %{HTTP_HOST} ^(desktopscenes.com|www.desktopscenes.com)$ [nc]
RewriteRule ^ - [L]

RewriteRule ^(.*)\s(.*)$ /$1_$2 [L]
RewriteRule ^(.*)\((.*)$ /$1-_$2 [L]
RewriteRule ^(.*)\)(.*)$ /$1$2 [L]

RewriteRule ^(.*)slides/(.*)\.(jpe?g|gif|png|bmp) /$1index.htm\#$2.$3 [NE,R=301,L]
于 2012-09-25T02:06:58.180 に答える