2012-11-15 22 views
1

我想除了使用WordPress的寫一個重寫規則AJAX重寫規則:對目錄

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

我不喜歡一切重定向到主頁面。我有多個子目錄也需要重定向:http://www.example.com/sub1http://www.example.com/sub2。我正在這樣做,所以我的內容可以通過Ajax加載。

我認爲這將僅僅是

RewriteRule ^/(sub1|sub2)/(.*)$ http://www.example.com/$1/ [L] 

其中我放在這裏塊:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/(sub1|sub2)/(.*)$ http://www.example.com/$1/ [L] 
RewriteRule . /index.php [L] 
</IfModule> 

也許與WordPress,你必須使用wp_rewrite_rule?我想我可能會混淆.htaccess文件,讓我的規則工作,然後將其移到函數。

任何幫助,將不勝感激。

謝謝。

更新: 我也試着設置.htacces文件恢復到WordPress的默認...這代碼添加到functions.php文件爲我的子主題:

function AJAX_rewrite_rule() { 
add_rewrite_rule(
    '^/(sub1|sub2)/(.*)$', 
    'http://www.example.com/$1', 
    'top'); 
}; 
add_action('init', 'AJAX_rewrite_rule'); 

似乎減慢一切的負載,但所有未找到的文件仍然被重定向到主頁面,而不是子目錄。

UPDATE#2 我想我錯了方向,因爲add_rewrite_rule只是添加一個規則到wordpress已經存在的結構。這一切都通過解釋URL的作用,並將它們更改爲由索引運行的數據庫查詢的變量。

我很確定我需要使用$ wp_rewrite-> non_wp_rules。如果有人有更多的想法,讓我知道。

回答

0

試試這個,你似乎有INE壞線有:

<IfModule mod_rewrite.c> 
RewriteEngine On 
# RewriteBase/
# RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f #Means DONT redirect if file exists. 
RewriteCond %{REQUEST_FILENAME} !-d #Means DONT redirect if directory exists. 
RewriteCond %{REQUEST_URI} !^/sub1/ 
RewriteCond %{REQUEST_URI} !^/sub2/ 
# RewriteRule ^/(sub1|sub2)/(.*)$ http://www.example.com/$1/ [L] 
RewriteRule . /index.php [L] 
</IfModule> 

會發生什麼情況是,每次添加一個「重寫規則」所有「的RewriteCond」被應用到該規則的時間,然後你開始與空白的石板:

RewriteCond A 
RewriteCond B 
RewriteCond C 
RewriteRule Whatever [L] #This applies A, B, and C 
RewriteRule Another [L] #This applies no rules 

也許這將有所幫助。

此外,您可以嘗試將你的 「重寫規則^ /(SUB1 | SUB2)/(。*)$ http://www.example.com/ $ 1/[L]」, 「RewriteEngine敘述在」 如果不工作之後......

+0

既不工作,但謝謝你 – JVD

+0

如果你在第二個RewriteCond之後添加了這個(使用我的第一個示例): RewriteCond%{REQUEST_URI}!^/sub1/ RewriteCond%{REQUEST_URI}!^/sub2 /(我更新了答案) – Nitroware

+0

從那裏,您可以在這些子目錄中使用.htaccess來根據需要重定向 – Nitroware