9

私の wordpress ブログは にインストールされてdomain.com/blogおり、構造が と のようなサブページを含むページがありdomain.com/blog/pageますdomain.com/blog/page/subpage

ワードプレスのパーマリンクの書き換えを回避して、訪問者が外部からその URL にリダイレクトされることなくdomain.com/subpage、コンテンツにアクセスして表示できるようにしたいと考えています。domain.com/blog/page/subpage

使用RewriteRule ^subpage$ /page/subpage [L]してみましたが、コンテンツは提供されていますが、URLは次のようになりますdomain.com/blog/page/subpage(Wordpressのパーマリンクがそれに到達していると思います。)

.htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]

// tried inserting my code here.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress

編集:

これらのログは、ページ訪問時のアクティビティを示しています -

ip - - [19/Jun/2012:14:03:53 -0400] "GET /subpage/ HTTP/1.1" 301 - "http://domain.com/referrer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1"
ip - - [19/Jun/2012:14:03:53 -0400] "GET /blog/page/subpage/ HTTP/1.1" 200 20022 "http://domain.com/referrer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1"

また、ここに私のルート .htaccess があります -

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^subpage/?$ /blog/page/subpage/ [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

RewriteCond %{HTTP_HOST} ^domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
4

1 に答える 1

3

Wordpress を使用しているときに、htaccess にいくつかのルールを追加するのは常に注意が必要です。代わりに、その書き換え API を使用する必要があります。

最初に、このコードを の最後に置きます/wp-content/themes/CURRENT_THEME_ACTIVATED/functions.php

function my_custom_page_rewrite_rule()
{
    add_rewrite_rule('^subpage/?', 'index.php?pagename=page/subpage', 'top');
}
add_filter('init', 'my_custom_page_rewrite_rule');

注意: パラメータでページ レベルを指定する必要がありますpagename。そうしないと、URL が変更されます。

次に、新しいルールを考慮に入れる必要があることをWordpressに伝える必要があります。これを行うには、管理パネルに移動します: Settings> Permalinks> ボタンをクリックしSaveます。domain.com/blog/subpageこれで、にアクセスしてコンテンツを表示できるはずですdomain.com/blog/page/subpage(URL は変更されません)。

最後に、到達可能にしたい場合はdomain.com/subpage、ルート フォルダーに htaccess を追加し、次のコードを入れる必要があります。

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ blog/$1 [L]

以上です。あなたは行くことができdomain.com/subpage、今あなたはあなたが望むものを手に入れるでしょう.

于 2016-04-06T16:26:56.190 に答える