2

.htaccess で子ディレクトリではなく、ディレクトリへのアクセスを無効にしたい

すべてを子ディレクトリ (public_html) にリダイレクトする書き換えルールを既に作成しましたが、ユーザーが URL を知っていればその親にもアクセスできます。子ディレクトリではなく現在のディレクトリへのアクセスを無効にしたい

    # 書き換えをオンにします。
    RewriteEngine on

    # このドメインの URL にのみ適用
    RewriteCond %{HTTP_HOST} ^(www.)?domain.com$

    # まだフォルダーの下にない URL にのみ適用されます。
    RewriteCond %{REQUEST_URI} !^/フォルダ/

    # 既存のファイルまたはフォルダーに移動する URL には適用しないでください。
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # これらをすべて書き換えて /folder を挿入します。
    RewriteRule ^(.*)$ /folder/$1

    # ルート フォルダーもリダイレクトします。
    RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
    RewriteRule ^(/)?$ フォルダ/index.php [L]
4

1 に答える 1

7

メイン サーバー構成で 2 つの .htaccess ファイル、または 2 つのディレクトリ セクションを使用する必要があります (サーバーで .htaccess ファイルが許可されている場合は、最初のソリューションの方が簡単です)。

次のようなコンテンツを含む .htaccess をルートに配置します。

Allow from none
Deny from all

そしてpublic_html、コンテンツを含むフォルダーに1つ入れます:

Allow from all

このようにして、ルートでは何もアクセスできなくなりますが、public_htmlこれをオーバーライドすると、すべてがアクセス可能になります。

編集:

この .htacces をルートに配置することで、目的を達成できます。

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_URI} !^/public_html/
RewriteRule ^(.*)$ public_html/$1

元のものを入れて、それを変更して、現在フォルダーpublic_htmlにあることを反映します。public_html私が投稿したこの構成は、ルート ディレクトリをスキップし、がルートであるかのように見せかけpublic_htmlます。

于 2012-07-18T15:39:57.440 に答える