2011-12-07 5 views
0

私はApacheの基本的な設定を得ましたが、Apacheのマニュアルの指針で分かりましたが、リダイレクションルールは現時点では少し複雑ですので、助けてください。Apache Rewrite Rules

私は次のことを達成したい:

  • HTTPを介してすべての着信要求がhttpsを使用するようにリダイレクトされます。
  • 仮想ホスト(m.domain.tldおよびcontent.domain.tld)として定義されているサブネットを除くすべてのサブネットは、domain.tldにリダイレクトする必要があります。
  • "/"の後ろにすべてを置きますが、これは必ずしも必要ではありません。たとえば、

  • ます。http:/domain.tld→ます。https:/domain.tld
  • ます。http:/whatever.domain.tld→ます。https:/domain.tld
  • HTTPS :/whatever.domain.tld→ます。https:/domain.tld
  • ます。http:/m.domain.tld→ます。https:

を/m.domain.tld私は基本的に仕事を得ましたこれは非常に基本的なルールではありますが、http経由で受信する要求に対してのみ機能し、https経由で受信しない既存のサブネットは再フォーマットされません。

<VirtualHost _default_:80> 
    Redirect permanent/https://domain.tld/ 
</VirtualHost> 

あなたは、明確なガイドの方向に私を助けたり、指し示すことができます(まだ1つもしていません)。

+0

先頭へ戻るhttpsは、http:443と80(デフォルトの共通ポート番号)以外の異なるポートから提供されます。 HTTPSを強制する - 既にここで利用可能な数多くのトピックが検索されています。サブドメイン名にも同じ:「標準ドメイン名」を検索します。あなたのケースに対する正確なルールを与えることに問題はありません。しかし、この種の質問は2日おきに尋ねられますので、ここで回答を見つけるのに問題はありません。それらを探して、まだ投稿されている特定の問題について投稿を更新してください。 – LazyOne

+0

本当に申し訳ありませんが、私は自分のことを嫌いです。私が尋ねた理由は、スタックオーバーフローのようなサイトを見て数日後、私はルールを本当に把握できないからです。しかし、私はタイプしながら実験しています。私は明らかな(セキュリティ上の)脆弱性を持つコピー・ペースト・ルールセットを作成するのは少し怖いです。ここに「検討のためにそれらを置く」作業規則を持っているときは許可されていますか? – Bart

+0

「これをチェックしてください」または「ここで何が間違っているのか」と判断された場合は、「いいえ」と表示されます。もしこれが "これが行われる必要があります;ここにルールがあります;これは動作し、これはありません - 誰かを助けることができる" - はい、あなたはそれに取り組んでいることを明確に示し、正しい方向など – LazyOne

答えて

0

これらのmod_rewriteルールを試してみてください。

RewriteEngine On 
Options +FollowSymLinks 

# force HTTPS for m.example.com 
RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_HOST} =m.example.com 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# only allow m.example.com & example.com -- everything else gets redirected to https://example.com 
RewriteCond %{HTTPS} =on 
RewriteCond %{HTTP_HOST} !=m.example.com 
RewriteCond %{HTTP_HOST} !=example.com 
RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L] 

# if still no HTTPS then force it (for any other subdomain) 
RewriteCond %{HTTPS} !=on 
RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L] 

# your other rewrite rules below 

サーバsomething.example.comにできるようにするために、あなたがその特定のサブドメインまたはANYをカバーするワイルドカードSSL証明書の適切なSSL証明書が必要であることを、覚えておいてくださいサブドメイン。 mod_rewriteが何かをする前に、HTTPSのSSL部分が動作するように、重要なのです(セキュアな接続が既に適切に確立されている場合にのみ起動します)。

+0

あなたの迅速な対応に感謝します! SSLはすでにワイルドカード証明書で動作しています。私は仮想ホストを正しく設定することを望みますが、それはすべてうまく機能します。 最初のルールと最後のルールを、その仮想ホストの唯一の内容であるに入れました。したがって、すべてのリクエストはDocumentRoot、サーバー証明書などを含むにリダイレクトされ、最後の2つのルールが追加され、https上の奇妙なサブドメインへのリクエストも再フォーマットされます。 – Bart