0

特定の構造化 URL を別の構造に書き換えようとしています。

元のURLは

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

そして私はそれをに書き直そうとしています

http://www.mywebsite.com/FF_Supersneaker_Black_Metallica.html

基本的に「_p/155-157.htm」を削除し、.html を追加

これを行うために使用しているhtaccessファイルは

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

しかし、それは失敗しているようです。これは、ページに移動したときに取得する書き換えログです。

255.255.255.255 - - [25/Apr/2012:12:34:43 --0400] [www.mywebsite.com/sid#9b25ed8][rid#9e33c28/initial] (3) [perdir /var/www/test/] strip per-dir prefix: /var/www/test/FF_Supersneaker_Black_Metallica_p/155-157.htm -> FF_Supersneaker_Black_Metallica_p/155-157.htm
255.255.255.255 - - [25/Apr/2012:12:34:43 --0400] [www.mywebsite.com/sid#9b25ed8][rid#9e33c28/initial] (3) [perdir /var/www/test/] applying pattern '/(.*)/(.*)_p/[^/]*.htm$' to uri 'FF_Supersneaker_Black_Metallica_p/155-157.htm'
255.255.255.255 - - [25/Apr/2012:12:34:43 --0400] [www.mywebsite.com/sid#9b25ed8][rid#9e33c28/initial] (1) [perdir /var/www/test/] pass through /var/www/test/FF_Supersneaker_Black_Metallica_p/155-157.htm

私のルールに何か問題があるように思えますが、何が原因かわかりません。誰かが私に考えを与えることができれば、私はそれを感謝します.

助けてくれてありがとう。

4

1 に答える 1

2

まず、これを見てください:

strip per-dir prefix: /var/www/test/FF_Supersneaker_Black_Metallica_p/155-157.htm -> FF_Supersneaker_Black_Metallica_p/155-157.htm

照合しているそのパスは、実際にFF_Supersneaker_Black_Metallica_p/155-157.htmはディレクトリコンテキスト内で (.htaccessファイルから) 実行しているためです。/したがって、 ...で始まるものには一致しません。

それは、あなたが本当に欲しいのは単に...

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

...結果を次のようにしたい場合:

FF_Supersneaker_Black_Metallica.html
于 2012-04-25T16:46:12.523 に答える