0

mod_rewrite や正規表現はあまり得意ではありませんが、移動するサイトでは最終的に 301 リダイレクトを使用する必要があります。旧サイトの構造はそのまま

http://www.mywebsite.com/FF_Supersneaker_Black_Metallica_p/155-157.htm

同じ製品の新しいサイトはそのままです

https://www.mywebsite.com/FF_Supersneaker_Black_Metallica_p.html

私がする必要があるのは、「/155-157」を抽出して削除し、拡張子を.htmではなく.htmlに変更することです

したがって、論理的には、「/」の最後の出現と「。」の最後の出現を見つける必要があると思います。間のすべての値を "" に変更します。次に、ファイル拡張子の変更はインターネット上のどこにでもありますが、それを残りの部分にどのように組み込むかはわかりません。

編集: ここに私の .htaccess ファイルがあります:

<IfModule mod_rewrite.c>  
RewriteEngine On    
RewriteRule /(.*)/(.*)/[^/]*.htm$ /$1$2.html
</IfModule>

そして、これを使用しようとしたときの rewritelog の関連エントリです。(IPとドメイン名を変更しただけです.tailを使用して、ページにアクセスしようとしたときにポップアップするエントリをコピーしました.

255.255.255.255 - - [25/Apr/2012:11:57:24 --0400] [www.mywebsite.com/sid#9b25ed8][rid#9e3cc48/initial] (1) [perdir /var/www/test/] pass through /var/www/test/FF_Supersneaker_Black_Metallica_p/155-157.htm

テスト ページに追加のディレクトリがあるため、追加の /(.*) を追加しました。そのための構造は http://www.mywebsite.com/test/FF_Supersneaker_Black_Metallica_p/155-157.htmであり、http://www.mywebsite.com/test/FF_Supersneaker_Black_Metallica_p.html にリダイレクトされ ます。

たくさんの質問をして申し訳ありません。また、書き換えログを有効にするには、apache.conf または httpd.conf ファイルに移動してサーバーを再起動することしかできませんよね? その場合、私には権限がありません。

4

1 に答える 1

1

ここで行っているのは、最後のパスコンポーネントを削除してから、「。html」を追加することだけです。だから多分このようなもの:

RewriteRule /(.*)/[^/]*.htm$ /$1.html

シーケンス[^/]は「ではない任意の文字/」を*意味し、「前のパターンを0回以上」を意味するため、文字列以外の文字列の後に続く[^/]*.htm文字列の任意の文字列と一致します。これらを破棄し、他のすべてを使用して、を追加します。/.htm.html

URL書き換えガイドには、多くの情報と例があります。

于 2012-04-24T03:41:28.247 に答える