2

ステージング環境にデプロイしたばかりの新しいプロジェクトで HTML5 ボイラープレート ビルド スクリプトを使用しています。スクリプトは魔法のように機能します。よく文書化されているので、私のアプリケーションで使用するために簡単に構成できました。

ドキュメントを読んだ後、VCS ベースの展開に Paul Irish のアプローチを使用して /publish ディレクトリを指すことにしました。

RewriteEngine On
RewriteCond $1 !^publish/
RewriteRule ^(.*)$ publish/$1 [L]

特定のセットアップ用にこのように構成しましたが、すべてが必要に応じて縮小および連結されたファイルを指しています。これはすばらしいことですが、http://[mysite.com]/publish/ にアクセスして、/publish ディレクトリを直接参照することもできます。

これは、ぶら下がったままにしておくための一種の緩い糸のように思えます。ここで誰かがこれに遭遇し、良い解決策を思いついたのではないかと思っています。ユーザーが URL の後に /publish/ を入力することは想定していませんが、確実にクロールできるようにしたくはありません。

何か案は?

前もって感謝します

更新:以下の Gerben からの多大な支援の後、私はこれについての私の考えを少し変更することになりました - ユーザーは /publish に入力しないため、ユーザーを /publish からルート URL にリダイレクトする必要はありません。 [site.com]/publish へのリンクは絶対にしないでください。代わりに、/publish ディレクトリ内の .htaccess ファイルに次のルールを追加しました。これにより、publish サブディレクトリへのリクエストに対して 403 エラー (禁止) が生成されます: http://httpd.apache.org/docs/current/rewrite/flags.html#flag_f

RewriteCond %{THE_REQUEST} publish
RewriteRule .? - [F]

さらに、検索ボットが同じデータを含む 2 つのファイル セットのインデックスを作成しないように、publish ディレクトリを robots.txt に追加しました。

4

2 に答える 2

0

私はあなたの質問を読み違えたようです。以下は、ルートフォルダーに何かをリダイレクトすると思います。

RewriteCond %{THE_REQUEST} " /publish/"
RewriteRule ^publish/(.*) /$1 [R=302,L]

誤って htaccess などを削除してしまった場合に備えて、robots.txt に /public も禁止として追加することをお勧めします。

説明: RewriteRule は、要求された URL が で始まることを確認し、publish/___それらの URL を にリダイレクトし/___ます。/publishただし、への直接のリクエストと書き換えられた URLを区別するには/publish、最初にリクエストされた URL を調べる必要があります。これに到達する唯一の方法は、THE_REQUEST 変数を使用することです。その変数にはGET /publish/___ HTTP/1.1、直接リクエストのようなものが含まれている必要があります。したがって、RewriteCond は以下の存在をチェックします。<space>/publish/

編集: 最終的な試み:

RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^publish/(.*) /$1 [R=302,L]
于 2012-05-21T17:33:46.217 に答える
0

そこで私がたどり着いた解決策は、ユーザーが [site.com]/publish でたまたま偶然遭遇した場合に、ユーザーに 403 (禁止) エラーをスローすることでした。これが私がそれをした方法です:

ルート ディレクトリの .htaccess ファイルでは、h5bp ドキュメントからこのルールを保持しました。

RewriteCond $1 !^publish/
RewriteRule ^(.*)$ publish/$1 [L]

/publish ディレクトリの .htaccess ファイルに、F フラグ (禁止) を付けて次のルールを追加しました。

RewriteCond %{THE_REQUEST} publish
RewriteRule .? - [F]

これが、この問題に遭遇した他の人に役立つことを願っています!

于 2012-05-29T20:44:26.983 に答える