簡體   English   中英

WordPress .htaccess重新寫入規則

[英]WordPress .htaccess ReWrite rule

我正在嘗試使用URL中的“ info”更改所有?category = [name]實例。 在我的.htaccess文件中,我嘗試將它放在有關索引的RewriteRule之后(在BEGIN WordPress和END WordPres注釋內):

RewriteRule ^info$ ?category=$1 [NC,L]

因此,基本上,如果我們擁有www.example.com/bill/?category=test,則應該改為www.example.com/bill/info,或者更好,但僅用任何內容代替都會更好,因此www.example。 com / bill。 無論哪種方式都行。

不過,我確實需要獲取該類別變量。 如果這會導致錯誤,則可以接受www.example.com/bill/test之類的東西,只要它仍然可以讓我獲取php中的category變量。

不幸的是,.htaccess文件無法在WordPress中作為變量工作。 但是,有WordPress重寫系統(可處理其他內容的永久鏈接)。 這將允許您使用諸如https://www.example.com/bill/test類的URL並將“ test”分配給變量。

我還建議添加“重寫規則”檢查器插件( https://wordpress.org/support/view/plugin-reviews/rewrite-rules-inspector ),因為它將幫助您更好地了解正在發生的事情並驗證您的功能正在生效。

您需要做的第一件事是注冊一個新的查詢變量。 您可以添加多個。 它們只會添加到/bill/<billCategory>/<billSomething>類的URL中。 您需要確保遠離可能會沖突的名稱。 不幸的是,這些沒有很好的記錄。

function add_bill_arguments( $public_query_vars )
{
    $public_query_vars[] = 'billCategory';
    return $public_query_vars;
}

add_filter('query_vars', 'add_bill_arguments');

接下來,您將必須添加重寫規則。 這將告訴WordPress在/bill/處“停止”,然后將所有后續內容分配給您設置的查詢變量。

function bill_rewrite()
{
    add_rewrite_rule( '^bill/([^/]*)/?', 'index.php?pagename=bill&billCategory=$matches[1]', 'top' );
}

add_action('init', 'bill_rewrite');

現在已經有了這些,就可以像這樣訪問變量了...

global $wp_query;

if( is_page( 'bill' ) )
{
    if ( isset( $wp_query->query_vars['billCategory'] ) )
        $billCategory = $wp_query->query_vars['billCategory'];

    echo $billCategory;
}

添加重寫后,需要刷新重寫規則。 最簡單的方法是進入管理員並訪問“設置”->“永久鏈接”。 然后點擊保存按鈕。 頁面重新加載后,請再次執行。 有時,重寫會卡住。 如果安裝了我上面提到的插件,則可以檢查並確保它們在其中。

希望這將幫助您朝正確的方向開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM