1

同じファイルに Redirect ルールと Mod Rewrite ルールを混在させない方がよいと言われたので、まだ htaccess ファイルに残っている Redirect 301 ルールをいくつか変換する必要があります。

Redirect 301 /bar.php http://www.foo.com/abc/bar.php 
RedirectMatch 301 ^/(bar(?!bapapa\.)[^/.]+\.php)$ http://www.foo.com/abc/$1
  1. /bar.phpへのすべてのアクセスを、サブフォルダー abc 内の同じファイルにリダイレクトします
  2. /bar( を除く)で始まる php ファイルへのすべてのアクセスを/barbapapa.php、サブフォルダー abc 内の同じファイルにリダイレクトします。

両方のルールを変換できませんでした。最初のルールについては、次のようにしてみました。

RewriteRule ^bar.php$ "http://www.foo.com/abc/bar.php" [R=301]

/bar.phpからに正しくリダイレ​​クトされ/abc/bar.phpますが、ページの代わりに、サーバーがリクエストを完了できない方法でリダイレクトしていることを示すブラウザ メッセージ (Firefox) が表示されます。ヒントはありますか?ありがとう

編集: /abc/.htaccess の内容

RewriteEngine On

#inherit from root htaccess and append at last
RewriteOptions inherit

#disable hotlinking but allow image bots
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?foo.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !images.google\.
RewriteCond %{HTTP_REFERER} !yahoo\.
RewriteCond %{HTTP_REFERER} !bing\.
RewriteCond %{HTTP_REFERER} !msn\.
RewriteCond %{HTTP_REFERER} !ask\.
RewriteCond %{HTTP_REFERER} !arianna\.
RewriteCond %{HTTP_REFERER} !yandex\.
RewriteCond %{HTTP_REFERER} !babylon\.
RewriteCond %{HTTP_REFERER} !virgilio\.
RewriteCond %{HTTP_REFERER} !avg\.
RewriteCond %{HTTP_REFERER} !delta-search.com\.
RewriteCond %{HTTP_REFERER} !images.search.conduit.com\.
RewriteCond %{HTTP_REFERER} !search.findeer.com\.
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteCond %{HTTP_REFERER} !search\/cache [NC]
RewriteCond %{HTTP_REFERER} !cache [NC]
RewriteRule \.(jpe?g|png|gif)$ - [NC,F]

#rename old gif maps to png
Options +FollowSymLinks
RewriteRule ^([^.]+)\.gif$ http://www.foo.com/abc/$1.png [L,R=301]

Options -Indexes
4

1 に答える 1