wordpress网站问题中的.htaccess

时间:2012-02-19 13:18:08

标签: wordpress .htaccess

Google的WMT工具将我的网站视为2个不同的网站,因此我想实现从非www到www的301重定向。主网站www.mysite.com使用Flash构建,包含wordpress博客的文件夹分别保存在www.mysite.com/blog/.

在Wordpress文件夹中有一个带有以下脚本的.htaccess文件,由于有2个RewriteRules和RewriteCond条目,因此看起来不正确。我应该删除其中的一个还是需要它们?

为什么!-f和!-d在那里 - 他们做了什么?

我的主要Flash网站也应该拥有自己的.htaccess文件,用于301非www到www?

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

1 个答案:

答案 0 :(得分:2)

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /blog/

#If the file requested is index.php from the current folder(here: blog)
#do not do anything
RewriteRule ^index\.php$ - [L]

#if other requests are not regular files or directories,
#redirect it to /blog/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

</IfModule>

请勿删除上述任何规则。它们很好并且很好需要。事实上,我建议你也加上这个:

RewriteCond %{REQUEST_FILENAME} !-l

来自rewritecond apache docs -f-d&amp; -l是CondPatterns的变种。而不是真正的正则表达式字符串。

  
      
  • ' - d'(是目录)   将TestString视为路径名并测试它是否存在,并且是一个目录。
  •   
  • ' - f'(是常规文件)   将TestString视为路径名并测试它是否存在,并且是常规文件。
  •   
  • ' - l'(是符号链接)   将TestString视为路径名并测试它是否存在,并且是一个符号链接。
  •   

如果以感叹号('!')作为前缀,则会导致否定其含义。即!-f表示不是常规文件。


要从non www重定向到www个网址,请在.htaccess的{​​{1}}中使用此内容:

DocumentRoot