2012-06-18 32 views
9

我的WordPress博客安裝在domain.com/blog,我有一個頁面,其子頁的結構看起來像domain.com/blog/pagedomain.com/blog/page/subpage重寫爲WordPress基礎之外的網址

我希望我的訪問者能夠訪問domain.com/subpage並查看domain.com/blog/page/subpage的內容,而不會被外部重定向到該URL,從而避免wordpress永久鏈接重寫。

我嘗試使用RewriteRule ^subpage$ /page/subpage [L]和內容正在被送達,但是URL看起來像domain.com/blog/page/subpage

的.htaccess(我猜的WordPress的永久鏈接都得到它。):

# 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$ 
+0

嘗試在* RewriteBase/blog /' –

+0

同一問題之前插入代碼*內容加載,但url仍然是'/ blog/page/subpage /' –

+0

出於好奇,如果更改規則的正則表達式到:'^ subpage/$'? –

回答

3

添加在你的htaccess的一些規則,而使用Wordpress,始終是棘手的。相反,你應該使用它的重寫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參數指定的頁面等級,否則網址將發生變化。

然後,你需要告訴Wordpress它必須考慮你的新規則。爲此,請轉到管理控制檯:Settings>Permalinks>點擊Save按鈕。現在,您應該可以訪問domain.com/blog/subpage並查看domain.com/blog/page/subpage的內容(網址不再更改)。

最後,如果你想domain.com/subpage訪問,你需要添加在根文件夾htaccess的,並把這個代碼到其中:

RewriteEngine On 
RewriteBase/

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

而且......就是這樣。你可以去domain.com/subpage,現在你會得到你想要的。