2013-03-25 159 views
0

我使用Dokuwiki作爲我的網站。我有一個關於htaccess重寫規則的簡單問題。我有以下配置。建議來自the Dokuwiki helphtaccess不能重寫規則

Options -Indexes -MultiViews +FollowSymLinks 
RewriteEngine on 

RewriteCond %{HTTPS} !=on 
RewriteRule ^lib/exe/xmlrpc.php$  https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] 

RewriteRule ^_media/(.*)    lib/exe/fetch.php?media=$1 [QSA,L] 
RewriteRule ^_detail/(.*)    lib/exe/detail.php?media=$1 [QSA,L] 
RewriteRule ^_export/([^/]+)/(.*)  doku.php?do=export_$1&id=$2 [QSA,L] 
RewriteRule ^$      doku.php [L] 
RewriteCond %{REQUEST_FILENAME}  !-f 
RewriteCond %{REQUEST_FILENAME}  !-d 
RewriteRule (.*)      doku.php?id=$1 [QSA,L] 
RewriteRule ^index.php$    doku.php 

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

我承認我不明白髮生了什麼。重要的是,我想

http://mydomain.com 

改變到

http://www.mydomain.com 

以及任何子域。另外,我想擺脫醜陋的Dokuwiki語法,它附加了doku.php之類的東西?到鏈接的結尾。

目前,與此.htaccess文件轉換爲:

[Good] www.mydomain.com --> www.mydomain.com 
[Good] www.mydomain.com/mypage --> www.mydomain.com/mypage 

[Bad] mydomain.com --> www.mydomain.com/doku.php 
[Bad] mydomain.com/mypage --> www.mydomain.com/doku.php?id=mypage 

所以你看,它似乎如果我在事情面前重視WWW能夠正常工作,但是當我不這樣做,然後再-write規則附加正確的www,但現在醜陋的wiki語法也伴隨着站點名稱(doku.php和id = parts)。

我在htaccess配置中出錯了?

回答

0

TSGM,看起來很好,只不過你將mydomain.com改寫爲www.mydomain.com作爲最後兩行。移動最後兩行,以便它們在RewriteEngine on之後,並且應該修復它。

原因是(有時)重定向被觸發創建'乾淨的URL',當發生這種情況時,重寫爲www永遠不會被執行。

通過將這兩條線向上移動,您將迫使www重寫在doku重寫開始前先發生。