2013-09-16 21 views
1

我有一個非常簡單的網站,有一些靜態頁面,而且還使用重寫規則來拉在數據中的某些動態頁面例如:如何保持現有的重寫規則與WordPress安裝配合使用?

RewriteRule ^phone-directory/([^/\.]+).htm$ number.php?for=$1 [L] 

所以像任何網址:電話目錄/谷歌。 htm將始終在查詢字符串上加載number.phpgoogle

我已經爲CMS功能安裝了WordPress,但我仍然需要我的目錄在同一時間工作。我也希望該目錄使用WordPress主題,以便在網站範圍內改變樣式!

因此,我在我的WP主題目錄中設置了一個自定義模板,並在名爲「company-listing」的單詞印刷機中設置了一個「頁面」。然後,我添加了以下規則來我htaccess文件的頂部:

RewriteRule ^phone-directory/([^/\.]+).htm$ index.php?p=23 [L] 

P = 23指的是我的自定義頁面「公司上市」

這重寫規則的作品,並帶我到「的位置公司列表「,但這就是問題所在,URL重寫爲domain.com/company-listing

我不希望它這樣做。我認爲我的重寫規則被觸發,然後當index.php?p = 23被命中默認的WordPress重寫規則觸發器。我試過以下幾種方法來阻止這種情況發生:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/(phone-directory/.*)$ 
RewriteCond %{REQUEST_URI} !^/(index.php?p=23)$ 
RewriteCond %{REQUEST_URI} !^/(company-listing/.*)$ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

有什麼辦法可以解決這個問題嗎?要在WordPress中使用自定義模板並將其重寫爲我選擇的網址?總結:

我想:

domain.com/phone-directory/google.htm

加載:

domain.com/index.php?p=23(這是一個「頁」在WordPress)

回答

1

你只需要你的WordPress規則之前,有您的規則:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteRule ^phone-directory/([^/\.]+).htm$ number.php?for=$1 [L] 
RewriteRule ^phone-directory/google.htm$ index.php?p=23 [L] 

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

如果之前的規則之一匹配,只要number.php存在,則wordpress路由規則的!-f條件將失敗。

+0

嗨,喬恩。問題是,當index.php?p = 23被擊中時....那就是進一步匹配WordPress的規則。這就是爲什麼從index.php?p = 23,因爲它是一個wordpress頁面,所以url結束了/ company-listing。 –

+0

@JamesWilson'/index.php?p=23'將匹配'RewriteRule^index \ .php $ - [L]',它會停止完全重寫。如果瀏覽器被重定向,那是因爲WordPress正在這樣做。 –

+0

是同意的。我已經解決了一些問題。我已經設置了我的重寫命令來打開一個名爲「directory-listing.php」的新頁面,並且在該頁面上有一些代碼,它執行index.php的file_get_contents?p = 23 - 因此它吸收了正確的內容,並且我動態地更改它,沒有任何進一步的重定向! –