2013-03-25 157 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重写开始前先发生。