簡體   English   中英

WordPress + mod_rewrite

[英]WordPress + mod_rewrite

我將Wordpress用作CMS,首頁的大部分內容都是靜態的,而博客的實際部分已移至使用自定義頁面模板的新頁面,該模板的基本作用就像是標准頁面的首頁一樣。 WordPress安裝。 它運行良好,但仍然存在一些錯誤。 主要的問題是分頁將不再起作用,Wordpress無法識別所生成的頁面URL。

到目前為止,我已經將Wordpress配置為顯示正確的URL(domain.com/blog/page/2而不是domain.com/page/2),並且我還通過它顯示了特定的博客帖子頁面。 URL參數(domain.com/blog?page=N)。 因此,基本上我快完成了,只需要將domain.com/blog/page/N映射到domain.com/blog?page=N。 如果這只是一個簡單的舊靜態網站,這將是一件容易的事,但是Wordpress有它自己的URL處理,我相信這可能會干擾它-更不用說“ blog”不是實際的URL,因此它需要通過規則兩次,一次用於映射博客分頁,一次再次使Wordpress可以按常規處理生成的URL……我想我可能需要對重寫規則使用N或NS標志,但我只是不這樣做知道我將如何使用它們

我想出的規則:

RewriteRule ^/blog/page/([0-9]+)$ /blog?page=$1

默認的Wordpress .htaccess:

RewriteEngine On  
RewriteBase /  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule . /index.php [L]  

根據一些建議,我已經為.htaccess找到了它,但是它仍然無法識別它。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule /blog/page/([0-9]+)$ /blog?page=$1 [N,QSA]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

而且我相當確定通過URL參數更改頁面確實可以-我手動更改URL中的數字,實際上確實可以更改頁面。 Web服務器為LiteSpeed,如果有區別的話

我終於想通了(幾天后-直到現在我都忘記了)。 首先,請確保您已更新Wordpress。 當時我使用的是2.5或2.6,但由於某種原因,直到我進行了更新,它才起作用。

首先,創建一個自定義模板。 您將使用此模板作為主頁,以便自定義它以及所有爵士樂。 單獨保留“ Main Index”(index.php)模板-該模板將用於博客索引頁面,因此它需要WP循環來列出您的博客文章。

現在,去創建兩個頁面。 一個用於您的主頁(簡稱為“ blog”),另一個用於您的博客(簡稱為“ blog”)。 在“主頁”頁面上,將該模板設置為您先前創建的主頁模板。 在博客頁面上,將其保留在默認模板上-默認情況下,它將使用“主索引”模板。

現在,進入“閱讀”設置並將其更改為“靜態頁面”。 對於首頁,選擇先前創建的“主頁”頁面。 對於帖子頁面,選擇您創建的“博客”頁面。

應該是這樣。 我實際上已經事先嘗試過了,但是它沒有用,所以我嘗試使用重定向規則,但無濟於事。 我最終成為過時的WP安裝。 如果您安裝了站點地圖模塊,請確保排除“主頁”頁面,以免蜘蛛程序在example.com/home上找到主頁的副本。 您也可以確保將其放入robots.txt中。

完成后,域的根目錄(example.com /)(假設已在其中安裝WP)將指向“主頁”頁面。 您的博客頁面(example.com/blog)將列出您的帖子。 分頁將按預期進行(example.com/blog/page/2等)。

嘗試以下

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule /blog/page/([0-9]+)$ /blog?page=$1 [R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

或嘗試

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^blog/page/([0-9]+)$ /blog?page=$1 [NC,N]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [NC,L]
</IfModule>

NC使其不區分大小寫,N使其重新應用規則,L停止規則處理。

暫無
暫無

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

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