这是我的虚拟主机文件的剪辑:
SeverName domain.com
ServerAlias www.domain.com
<Directory />
Options -Indexes +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^\./]+\.[^\./]+$ [NC]
RewriteRule ^/(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . archive.php [L]
</Directory>
domain.com不会重定向到www.domain.com。
下面的部分工作正常,将页面重定向到archive.php。
答案 0 :(得分:0)
如果从匹配模式中删除/
,规则是否有效?
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
如果请求是http://domain.com而没有结尾/
,那么您使用前导/
编写的规则可能不匹配。或者,mod_rewrite可能会移除前导/
,因为您在RewriteBase /
上下文中有<Directory>
。这就是RewriteRule docs(“匹配什么?”框)似乎在说什么。