2012-02-26 3 views
0

私のURL構造は現在のパスを削除するために書き直した.htaccess:は同時にドメインを変更し、次のように

http://domain.com/folder/filename(CURRENT)

私は私ではなく、次のURLを使用できるように、これを変更したい:

http://sub.domain.com/filename(NEW)

ように電流または新しいURLにアクセスして、現在のURLにあるファイルをロードしますが、Aに新しいURLが表示されるはずですドレスバー。これは "/ folder /"パスにのみ適用する必要があります。

sub.domain.comはdomain.comのミラーです。それらは同じファイルシステムとルートディレクトリを共有します。これが動作しているが、パスから「/ /フォルダ」削除するルールが含まれていません

Options +FollowSymLinks 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$ [NC] 
RewriteCond %{REQUEST_URI} ^/folder/?(.*)$ [NC] 
RewriteRule ^(.*)$ http://sub.domain.com/$1 [R=301,L] 

は、これは私がこれまで持っているものです。私は運がない複数のRewriteRuleを組み合わせてみました。何か案は?ありがとう。


UPDATE:おかげで再び@Gerben - 私はあなたのルールが今何をしているかを理解しますが、もう一つは私のために働いていません。ページはリダイレクトループで終わるこのので

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

Chromeから(すなわち、:それはいくつかの他の書き換えルールと競合だので、私は私の.htaccessファイルでダウン下であるのWordPressのものは、特に、疑います): "ウェブページhttp://sub.domain.com/folder/index.phpでリダイレクトが多すぎます。" - 私はもともとアクセスしようとしたURLがあったが、例えば、http://sub.domain.com/page

任意のアイデアは?

+1

'RewriteRule^folder /(.*)$ http://sub.domain.com/$1 [R = 301、L]' – Gerben

+0

Gerben - ありがとう、しかし以下のような@jon-linの答えと同様、 404で、そのファイルはhttp://sub.domain.com/に物理的に存在しないので、私はそれが現れるようにしたい。 .htaccessの書き換えがこの問題の正しい解決策でない場合、私は代わりのアイデアを公開しています。 – Damien

答えて

0

試してみてください。

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$ [NC] 
RewriteRule ^(folder/)?(.*)$ http://sub.domain.com/$2 [R=301,L] 

これはsub.domain.comにすべてをリダイレクトし、そしてそれがある場合URI /folder一部を削除します。そうでない場合は、リダイレクトされ、URIは変更されません。

+0

ありがとう@ jon-lin。これは部分的にしか機能していません。 リダイレクトが機能しています。 "http://domain.com/folder/filename"(CURRENT)は "http://sub.domain.com/filename"(NEW)にリダイレクトされます。 しかし、NEW urlのファイルが存在しないため、404になります。 CURRENT URLのファイルは移動していません。 これは、私が必要とする物理的なリダイレクトよりもURLの書き換えが多いです。ブラウザにNEW URLを入力すると、アドレスバーのURLを変更せずにCURRENT URLにページが読み込まれます。 – Damien

0
RewriteCond %{THE_REQUEST} /folder/ 
RewriteRule ^folder/(.*)$ http://sub.domain.com/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC] 
RewriteCond %{REQUEST_URI} !^/folder/ 
RewriteRule ^(.*)$ folder/$1 [L] 

# WordPress rules here 

編集R=301

されていないはずしかし、ワードプレスあなたがfolderをしたい知る方法がないので、これは、動作しません。書き換えにProxyフラグを追加できますが、この内部プロキシ要求でリダイレクトしないように上記のルールを変更する必要があります。

+0

ありがとう、私は(コメントに必要な書式設定を含むことができなかった)以下に返信しました – Damien

+0

私は 'フォルダ'はWPの一部ではないと仮定します。上記の編集を参照してください。 – Gerben

+0

はい 'folder'はWP:親ページの一部です。 – Damien

関連する問題