0

新しい質問をすることが、既存の質問 (?) をフォローアップするための正しいアプローチであることを願っています。とは言っても、html 拡張子を非表示 + リダイレクト .html バージョン + 特殊なケースの例外について言及しています

ユーザー Jon Lin によって提供された htaccess はこれまでのところ問題なく動作しますが、関連する問題 (htaccess に関連していると思われます) に苦労しています。それをbaz.htmlと呼びましょう

既存の/引用された htaccess により、hxxp://mydomain.com/baz.html は hxxp://mydomain.com/baz に解決されますが、これで問題ありません。ただし、hxxps://shared.host.com/~user/baz(.html) で共有 ssl を使用しようとすると、404 not found エラーが発生します。私たちのホストが提供する共有sslチュートリアルはほとんど間違いがないので、これは使用されたhtaccessが原因であると確信しています(そう思います)。

また、ドキュメント ルート (foo.html) は、共有 ssl を使用してアクセスすると (唯一の非 404 として) 表示されますが、CSS(+images) は html コード内で比較的リンクされていますが、処理されません。私は(?)これが関連していると思います。

基本的に、私が実現したいことは、メインのサイト ナビゲーション内で hxxp://mydomain.com/baz の代わりに hxxps://shared.host.com/~user/baz をリンクして、安全なページを実現することです (私と同じ) foo(.html)、bar(.html)、セキュリティで保護されていないコンテンツのみ)

私の実際の問題が完全に理解できることを願っています(?)。なんらかの自己宣伝をしないために、実際のプロジェクト ページをリンクしたくありません。質問に答えるために実際のページへのアクセスが必要な場合は、必ずリンクを提供します (明示的に要求された場合)。

前もって感謝します。

4

1 に答える 1

0

共有 SSL ホストで同じ htaccess ファイルを使用することはできません。これは、ベースが (/~user/単なる ではなく/) 異なり、すべてのルールが本質的にどのように機能するかが変わるためです。したがって、これらの同じルールについては、異なるベースを考慮する必要があります。これらのルールをディレクトリ内の htaccess ファイルに入れる場合、次の/~user/ようにする必要があります。

編集: それらは同じドキュメント ルートであるため、すべてのルールを複製する必要があります。1 つは SSL 用、もう 1 つは SSL 用ではありません

RewriteEngine On

# 1. hiding the .html extensions
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/~user/%1.html -f
RewriteRule ^ /~user/%1.html [L]

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.html -f
RewriteRule ^ /%1.html [L]


# 2. 301 redirecting .html version
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /~user/([^\ ]+)\.html
RewriteCond %1 !foo$
RewriteRule ^ /~user/%1 [L,R=301]

RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.html
RewriteCond %1 !foo$
RewriteRule ^ /%1 [L,R=301]


# 3. typing /foo.html to resolve to / as well as typing /foo to resolve to / 
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/~user/(.*?/?)foo(\.html)?$
RewriteRule ^ /~user/%1 [L,R=301]

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/(.*?/?)foo(\.html)?$
RewriteRule ^ /%1 [L,R=301]

/bazとを SSL にリダイレクトするには、 domain.comドキュメント ルート (非 SSL のもの)のルール (のすぐ下)/baz.htmlの前にこれを追加する必要があります。RewriteEngine On

EDIT:ドキュメントルートは同じなので、SSLかどうかを確認する条件を追加する必要があります

RewriteCond %{HTTPS} off
RewriteRule ^/?baz(\.html)?/?$ http://shared.host.com/~user/baz [L,R=301]
于 2012-10-22T06:26:17.943 に答える