2009-10-09 42 views
1

我有一個包含vanilla Wordpress安裝的CakePHP站點。它住在/app/webroot/blog/。我遇到的問題是一個奇怪的問題。使用mod_rewrite修改CakePHP駐留的Wordpress重定向

我已通過mod重寫將站點配置爲將所有請求重定向至/app/webroot/blog/blog/。這是因爲當用戶通過app/webroot路徑訪問它時,Wordpress要麼拋出錯誤,要麼顯示沒有內容,並且如果您訪問它/blog/,它工作得很好。如果他們試圖訪問/blog而沒有結尾斜線,它也會將用戶重定向到/app/webroot/blog,所以我們也添加了這一點。下面是我們用來完成這一mod_rewrite規則:

RewriteRule ^blog$ blog/ [L] 
RewriteRule ^app/webroot/blog/(.*)$ blog/$1 [L] 

當用戶試圖訪問的WordPress的管理部分,但沒有通過認證,它把它們發送到/wp-login.php頁面並沿查詢字符串參數發送稱爲redirect_to,其中包含用戶在被要求進行身份驗證之前最初嘗試訪問的URL。該網址包含完整路徑(/app/webroot/blog/...),而不是僅僅去/blog,即使原始請求是/blog內的一個頁面。如果用戶成功進行身份驗證,則用戶將返回到登錄頁面,就好像什麼都沒有發生(沒有錯誤消息等)。

我會假設上面列出的第二個mod_rewrite規則將糾正這個問題,但它似乎並不是。

我希望我已經詳細解釋過,請讓我知道是否可以提供我可能已經忘記的其他信息。謝謝!

回答

2

你有沒有試過在wp數據庫中檢查wordpress選項。有兩種選擇你應該確保它是正確的。 siteurl and home。兩者應該是http://yoursite.com/blog

+0

是的,這些值都設置正確。 – inkedmn 2009-10-12 14:15:43

0

什麼是您的文檔根目錄? 讓應用/ Webroot公司/您的文檔根目錄,你會不會需要任何額外的重寫規則,因爲CakePHP的默認重寫規則已經有現有的文件和目錄的規則:

所以你/app/webroot/index.php將您的應用程序入口點與地址... /,

和應用程序/ Web根目錄/博客/將WordPress的切入點與地址... /博客/

默認重寫規則足以讓這個配置:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d # this will go to your blog dir, if it exists 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] # this is CakePHP app