0

古い CMS を置き換えるために SocialEngine をインストールしました。問題は、検索エンジンに古い URL が多数存在することです。それらを現在の Web サイトの対応する URL にリダイレクトしたいと思います (現時点ではホームページにしかリダイレクトされないため)。

古い CMS のすべてのコンテンツが SE にインポートされたので、古いページにはそれぞれ同等のものがあります。例: 古いアドレス: /index.php?mod=news&ac=commentaires&id=367 新しいアドレス: /articles/367

私は.htaccessに次のようなものを追加しようとしました:

redirectmatch 301 index.php?mod=news&ac=commentaires&id=([0-9]+) http://www.nailissima.fr/articles/$1

しかし、うまくいきません。古いアドレスを入力すると、対応する記事ではなくホームページにリダイレクトされます。

それを解決するのを手伝ってくれませんか?

これが私の .htaccess です:

# $Id: .htaccess 7539 2010-10-04 04:41:38Z john $

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On

  # Get rid of index.php
  RewriteCond %{REQUEST_URI} /index\.php
  RewriteRule (.*) index.php?rewrite=2 [L,QSA]

  # Rewrite all directory-looking urls
  RewriteCond %{REQUEST_URI} /$
  RewriteRule (.*) index.php?rewrite=1 [L,QSA]

  # Try to route missing files
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} public\/ [OR]
  RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|png|ico|flv|htm|html|php|css|js)$
  RewriteRule . - [L]

  # If the file doesn't exist, rewrite to index
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?rewrite=1 [L,QSA]

</IfModule>

# sends requests /index.php/path/to/module/ to "index.php"
# AcceptPathInfo On

# @todo This may not be effective in some cases
FileETag Size

前もって感謝します !

よろしくお願いします

4

1 に答える 1

0

リダイレクト命令の順序に問題がある可能性があります。

まず、現在のすべての一般的なルールをコメントで無効にして、新しいリダイレクトだけを試してください。

それらが機能する場合は、それらをどこに配置するかを注意深く考えてください。

命令の最後の[L]はそれを最後にするので、この命令が一致した場合、それ以上処理されません。

これを使用して、最初により詳細な指示を書き、後でより一般的な指示を書きます。そうしないと、さらなる指示が現在の内容を覆すときに状況に対応できます。

于 2012-05-06T15:06:28.217 に答える