• 解決済 fongafon

    (@fongafon)


    記事ページをアクセス禁止(トップページへリダイレクトか404)にしたいです。

    現状のディレクトリは下記のようになっており、WordPress一式は wp/ ディレクトリに入れている状況です。

    DOCUMENT_ROOT/
    ├ wp/
    │ ├ wp-admin/
    │ ├ wp-content/
    │ ├ wp-includes/
    │ ├ .htaccess
    │ ├ index.php
    │ ├ その他WPファイル(割愛)
    │
    ├ .htaccess
    └ index.php

    そして DOCUMENT_ROOT/index.php は次のようになっており、wp/ ディレクトリの wp-blog-header.php を読むよう指定しています。
    https://exaple.com/wp でなく、https://exaple.com でアクセスできるようにしたいためです。

    <?php
    /**
     * Front to the WordPress application. This file doesn't do anything, but loads
     * wp-blog-header.php which does and tells WordPress to load the theme.
     *
     * @package WordPress
     */
    
    /**
     * Tells WordPress to load the WordPress theme and output it.
     *
     * @var bool
     */
    define( 'WP_USE_THEMES', true );
    
    /* wp/ ディレクトリの wp-blog-header.php を読むよう指定 */
    require __DIR__ . '/wp/wp-blog-header.php';

    さて今回アクセス禁止にしたいのは category/ 以下と tag/ 以下のページ全てなので、DOCUMENT_ROOT/.htaccess を次のようにした(最後の3行を追加した)のですが、リダイレクトが起こってくれず、普通にアクセスできてしまいます。

    # BEGIN WordPress
    # "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
    # 動的に生成され、WordPress フィルターによってのみ修正が可能です。
    # これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    SetEnvIf Request_URI ".*" UnlimitedWpLogin
    
    # アクセス禁止にしたい
    RewriteRule ^category/ / [R=403,L]
    RewriteRule ^tag/ / [R=403,L]
    

    WprdPressが入っているディレクトリを指定してはどうかと思い次のようにもしてみましたが、変化ありませんでした。

    # アクセス禁止にしたい
    RewriteRule ^wp/category/ / [R=403,L]
    RewriteRule ^wp/tag/ / [R=403,L]

    尚、関係ないかと思いますが、DOCUMENT_ROOT/.htaccess でなく wp/.htacess の方は次のようになっています。(SiteGuard プラグインが生成した .htacess だと思います。)

    
    #SITEGUARD_PLUGIN_SETTINGS_START
    #==== SITEGUARD_RENAME_LOGIN_SETTINGS_START
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /wp/
        RewriteRule ^wp-signup\.php 404-siteguard [L]
        RewriteRule ^wp-activate\.php 404-siteguard [L]
        RewriteRule ^nekoneko(.*)$ wp-login.php$1 [L]
    </IfModule>
    #==== SITEGUARD_RENAME_LOGIN_SETTINGS_END
    #SITEGUARD_PLUGIN_SETTINGS_END
    
    # BEGIN WordPress
    # END WordPress
    

    どうすれば category/ 以下と tag/ 以下のページ全てをアクセス禁止にできるでしょうか…?(あと、リダイレクトの際は403で適当なのでしょうか?)
    どなたかよろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんにちは

    追加した3行を

    # BEGIN WordPress

    より上に書いてください。

    その際に、「アクセス禁止にしたい」の下に

    RewriteEngine on

    も追加してください。

    トピック投稿者 fongafon

    (@fongafon)

    こんにちは、@munyagu 様、ありがとうございます。

    WordPressのことなのだから# BEGIN WordPressより下だろうと思っておりましたし、WordPessのRewriteEngine Onがあるから不要だと思っておりました。

    難しいですね…。

    WordPress より先に処理しないと、WordPress が先に処理してしまって記述した箇所までたどり着かずに終わってしまいます。

    WordPress の記述より下なら WordPress のRewriteEngine Onが上にあるからいいですが、WordPress の記述より上に持って行くと、追加した RewriteRule より上にRewriteEngine Onが無いので効かなくなるかエラーになってしまいます。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「指定パス以降を禁止にしたい」には新たに返信することはできません。