我每天與WordPress的工作,並沒有看到過這個問題。也許SO社區有一些洞察力。WordPress的永久鏈接和重定向
我有一個標準的wordpress安裝v4.3,這是當前版本。我沒有活動的重寫模塊。沒有設置基本類別或標籤。固定鏈接被設置爲「發佈名稱」爲乾淨的URL,這適用於整個網站除了/博客以外的所有內容
我試圖重寫/ blog/*到index.php?page_id = xxx並寫了一個自定義分析器來處理似乎在本地工作的URI段。然而,在服務器上,所有/ blog/xxx只是重定向到/ blog /即使我沒有專門告訴它這樣做。
我曾嘗試在.htaccess中設置這樣的:
RewriteRule blog/(category|tag|page|search)/(.+)/?$ index.php?page_id=123
這不,即使自定義文章類型正則表達式檢查出來和所有其他重寫規則,我有工作的工作。
當失敗我試着寫一個重寫規則掛鉤:
// pathetic hack to fix wp permalink horror for blogs
add_filter('rewrite_rules_array','my_insert_rewrite_rules');
add_action('wp_loaded','my_flush_rules');
// flush_rules() if our rules are not yet included
function my_flush_rules(){
$rules = get_option('rewrite_rules');
if(isset($_GET['rules']))
{
echo '<pre>';
print_r($rules);
echo '</pre>';
}
if (! isset($rules['blog/(category|tag|page|search)/(.+)/?$'])) {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
}
// Adding a new rule
function my_insert_rewrite_rules($rules)
{
$newrules = array();
$newrules['blog/(category|tag|page|search)/(.+)/?$'] = 'index.php?page_id=123';
return $newrules + $rules;
}
在瀏覽器,如果您運行的規則顯示當前重寫陣列,它確實將它添加到陣列?然而由於某些原因,WP正在採取的行動是將重定向到index.php?page_id = 123,而不是加載它,讓我自己解析URI。就像「博客」這個詞在某種程度上是保留的一樣。
有沒有其他人看過類似的東西?我能想象的唯一相關插件可能會擾亂CCTM,但博客不是自定義內容類型。/blog只是一個普通的頁面,像其他任何根據URI段獲取帖子的普通頁面。
我建議嘗試爲這些頁面使用標準WP體系結構,但客戶端堅持一切都在/ blog/category/category_name/page/x下。他們不想爲此付出代價,而且我明白,因爲它在當地按預期運作。是的,服務器設置有細微的差異,但常見的核心元素是相同的 - htaccess啓用,wp是根目錄,並沒有安裝在一個目錄等。
我試過禁用所有插件,切換到2015主題,潮流固定鏈接,清除緩存等等。非常奇怪。
任何輸入或類似的故事可能會導致解決方案,所以我歡迎你有什麼。