我使用 Dokuwiki 作为我的网站。我有一个关于 htaccess 重写规则的快速问题。我有以下配置。这些建议来自Dokuwiki 帮助。
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 似乎可以正常工作,但是当我不这样做时,重写规则会附加正确的 www,但是现在丑陋的 wiki 语法也伴随着站点名称(doku. php 和 id= 部分)。
我在 htaccess 配置中哪里出错了?