2013-07-10 78 views
0

我試圖重寫URL到根目錄中刪除兩個子目錄並顯示該網頁來代替。這我在的.htaccess使用代碼:如何通過mod_rewrite從URL中刪除兩個子目錄?

RewriteRule ^page$ subdirectoryone/subdirectorytwo/page [NC,QSA,L] 

這是在根目錄下我的完整的.htaccess文件:

Options +FollowSymLinks 

RewriteEngine on 

RewriteCond %{HTTPS_HOST} ^mysite.com 
RewriteRule (.*) https://www.mysite.com/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^mysite.com 
RewriteRule (.*) https://www.mysite.com/$1 [R=301,L] 

RewriteCond %{SERVER_PORT} !=443 
RewriteRule ^(.*)$ https://www.mysite.com/$1 [R=301,L] 

# remove trailing slashes 
RewriteRule (.*)/$ $1 [L,R=301] 

RewriteRule ^page$ subdirectoryone/subdirectorytwo/page [NC,QSA,L] 

這是第一subddirectory中的.htaccess:

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

# END WordPress 

然而,當我打開www.mysite.com/page它會顯示錯誤404順便說的網址:我使用WordPress的,安裝在第一個子目錄 - 這是否有什麼區別?

而且,它的作品時,我只能去除第一兩個子目錄。

任何想法?提前致謝!

+0

是它與WP的巨大差異安裝。 WP劫持每一個URL並嘗試通過index.php路由它,這很可能是你獲得404的原因。讓我們看看你的整個htaccess規則。 –

+0

謝謝你的提示。我添加了完整的代碼。 – Georg

+0

你有沒有在兩個目錄中安裝wordpress?如果沒有,爲什麼Wp規則都是這樣。它應該只在它安裝的目錄中的htaccess中。這將有助於啓動。 –

回答

0

我實際上並沒有解決這個問題,但我終於找到了我想要做一個變通方法:

我安裝WordPress插件「永久鏈接編輯器」,讓我的URL從

www.mysite.com/subdirectoryone/subdirectorytwo/page 
改變

www.mysite.com/subdirectoryone/page 

然後,添加以下到在根目錄中的htaccess的:

RewriteRule ^page$ subdirectoryone/page [NC,QSA,L] 

這樣,我可以通過URL www.mysite.com/page訪問www.mysite.com/subdirectoryone/subdirectorytwo/page頁面。

教訓:在WordPress中,總是尋找一個插件問愚蠢的問題了。

0

它可能得到的東西做的方式WordPress是提取路徑信息和請求的URI信息。如果您要求/page即使在重寫的請求到達的WordPress,WordPress的可查看請求URI看「/page」,並認爲這是一個404

我敢肯定有處理這些類型的一些WordPress的具體方式事情,但是如果你有mod_proxy的加載,可以嘗試在您的規則添加P標誌:

RewriteRule ^page$ /subdirectoryone/subdirectorytwo/page [NC,QSA,L,P] 

所以該請求/subdirectoryone/subdirectorytwo/page經過在它自己的請求,整個請求處理過程。