1

私が Apache を使用してからかなりの時間が経ちましたが (非常に長い間)、それでも URL の書き換えなどはほとんど行わず、単純なホスティングだけでした。しかし今、私は、新しいドメインにブランド変更された中小企業向けの単純なリダイレクトをまとめようとしています。

セットアップ方法は、古いドメインのホストに、特定の URL への Web コントロール パネル ベースのリダイレクトがあることです。新しいドメインのページ。すべてのリクエストはリダイレクトされますが、リクエスト パス全体が含まれるため、新しいサイトで 404 が発生します。

私はいくつかの Apache ドキュメントと、オンラインで見つけられるいくつかの例を調べてきましたが、まだ十分ではありません。これまでに中断したのは、次のようなものです。

RewriteCond %{REQUEST_URI} .*looking-for-blah.* [NC]
RewriteRule ^ http://newsite.com/looking-for-blah [L,R=301]

アイデアは、 を含むパスに対して着信するリクエストは、そのlooking-for-blah前後に関係なく、明示的な に移動する必要があるということhttp://newsite.com/looking-for-blahです。したがって、古いホストが誰かを次のようにリダイレクトすると:

http://newsite.com/looking-for-blah/foo/baz

新しいサイトから次の場所にリダイレクトされます。

http://newsite.com/looking-for-blah

ただし、着信リクエストをキャッチしてリダイレクトしているようには見えません。の基本的な概念が欠けていRewriteCondますか? たぶん、私が考えもしなかった、これを行うためのより良い方法がありますか?

編集: .htaccess 全体の現在の状態は次のとおりです。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# BEGIN custom redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule looking-for-icamp http://empow.me/looking-for-icamp [L,R=301]
</IfModule>
# END icamp redirect

しかし、単純なwgetonを実行するhttp://empow.me/looking-for-icamp/fooと、目的の 301 ではなく 404 が返されます。

4

1 に答える 1

2

Wordpress のデフォルトのキャッチオール ルーティングは、ルールに到達する前に一致するため、 Wordpress の書き換えよりもにルールを配置する必要があります。また、あなたのトリックRewriteCondよりも循環書き換えの回避についてより明確にするためにa を追加しました。.+

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# BEGIN custom redirect

# This must take place before the Wordpress redirect to index.php
# Added condition to avoid circular rewrite
RewriteCond %{REQUEST_URI} !^/looking-for-icamp$ 
RewriteRule looking-for-icamp http://empow.me/looking-for-icamp [L,R=301]
# END icamp redirect

# Note - you had two identical WP blocks. I've removed one.

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# This rule was the one blocking your custom rule earlier....
RewriteRule . /index.php [L]

# END WordPress
</IfModule>
于 2013-02-02T17:17:05.983 に答える