"mysite.com", but "mysite.com/some-url" -> "old.mysite.com/some-url". RewriteEngine On RewriteCond %{REQUEST_URI}"> "mysite.com", but "mysite.com/some-url" -> "old.mysite.com/some-url". RewriteEngine On RewriteCond %{REQUEST_URI}"> "mysite.com", but "mysite.com/some-url" -> "old.mysite.com/some-url". RewriteEngine On RewriteCond %{REQUEST_URI}" />

このmod_rewriteがドメインをリダイレクトするのはなぜですか?

私は自分のドメインの "/"を過ぎたすべてのURLをold.mysite.comにリダイレクトしようとしていますが、mysite.com自体はそのままにしておきます。

For example, "mysite.com" -> "mysite.com", but "mysite.com/some-url" -> "old.mysite.com/some-url". Here's what I have now:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(.+)$
RewriteRule /(.*) http://archived.example.com/$1

But it's redirecting "mysite.com" -> "old.mysite.com". How can I modify this so that the core domain doesn't get redirected, but only when there are URL bits past the ".com/" so to speak?

2

1 答え

The RewriteCond %{REQUEST_URI} ^/(.+)$ matches all characters after the /

(.+) is a regular expression that matches any character.

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/[a-zA-Z0-9\/-]+$
RewriteRule /(.*) http://archived.example.com/$1

上記はそうするかもしれませんが、私は正規表現にはあまりよくありません。

[a-zA-Z0-9\/-]+ will match a series of any of the characters in the brackets following the trailing /.

私は、私のカンニングシートとして RegExLib を使用しています。また、ソースに対して正規表現をテストすることもできます(一致するものを見るため)。

0
追加された
ネイサン - 応答をありがとう。私の理解から、(。+)は任意の文字に一致しますが、少なくとも1文字でなければなりません。私の考えは、スラッシュの後に文字がある場合を除き、archived.example.com にリダイレクトしたくないということでした。私はちょうど "example.com"を "example.com"のままにしたかったからです理にかなっている。助けてくれてありがとう。
追加された 著者 Pacerier,
Nathan、あなたはすべて(スペースも含む)にマッチしていることを指摘して、正しい軌道に乗ってくれました。私はregexを読み直すように修正しました:RewriteCond%{REQUEST_URI} ^/[a-zA-Z0-9 \/ - ] + $そしてすべては今働いています。ありがとう!
追加された 著者 Pacerier,
それは完璧な意味合いがあります。そして私は自分自身を混乱させた。後でもう一度見直します。
追加された 著者 William 'Ike' Eisenhauer,
それは素晴らしいことです!私は少しでも何かを学んだ!上記の私の答えをあなたの貢献で編集しました。誰かがそれに沿って来たら助けになるでしょう!私は [a-zA-Z0-9 \/ - ] + を含めることを考えましたが、私に混乱させるのは、URL全体と一致させるべきか、コード>。 ドキュメントをより詳しく読むと、助けてくれた!私たちはそれを把握してうれしい!
追加された 著者 William 'Ike' Eisenhauer,