重写URL www.domain.com,导致我的页面出现404


Rewrite URL www.domain.com causing 404 on my page

好的,所以我已经重写了我网站中的URL,现在由于某种原因,如果我键入www.domain.com,它会抛出404错误,如果我输入domian.com,一切都很好。

DirectoryIndex home.php
IndexIgnore *
#RewriteCond %{HTTP_HOST} ^www'.(.+)$ [NC]
#RewriteRule ^(.*)$ http://%1/directory/$1 [L,R=301]
RewriteRule ^home/?$   home.php  [NC]
RewriteRule ^about/?$   about.php  [NC]
RewriteRule ^404/?$   404.php  [NC]
ErrorDocument 404 http://domain.com/directory/404

注意:我已经评论了第1条和第2条重写规则,因为即使我更改了它们,在将.htaccess上传到服务器后也不会生效,感觉就像缓存了一样。

附加信息,我使用embeds.php 中的<base>标签

if($_SERVER['REMOTE_ADDR'] == '::1') {
    echo '<base href="http://localhost/projects/directory/" />';
} else {
    echo '<base href="http://domain.com/directory/" />';
}

目录结构

Root -
  home.php
  about.php
     -stylesheets
      default.css
     -includes
      embeds.php
  404.php
  .htaccess

embeds.php包含在home.phpabout.php等中,样式表、脚本等,除了头部<base>标签外,都在embeds.php

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

它应该工作,如果它不工作,它来自你的DNS或Vhost配置。

这也是firefox的问题,它正在缓存我的.htaccess文件

以下是一些有用的链接,可以帮助其他用户参考这个问题

Apache-如何在调试htaccess 时禁用浏览器缓存

htaccess文件以某种方式被缓存?