htaccess rewriterule。我不希望所有这些都被重写 - 如何排除一些页面?

时间:2012-12-11 21:10:38

标签: html wordpress .htaccess mod-rewrite

我的htaccess如下:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^moreinfo/(.*)$ http://www.kgstiles.com/moreinfo$1 [R=301]
    RewriteRule ^healthsolutions/(.*)$ http://www.kgstiles.com/healthsolutions$1 [R=301]
    RewriteRule ^(.*)\.html$ $1/ [R=301]
    RewriteRule ^(.*)\.htm$ $1/ [R=301]
</IfModule>

我现在使用的是wordpress而不是直接的html编码。上面的重写文件用于转发根目录和/ moreinfo /和/ healthsolutions /目录中的所有旧.html和.htm页面。不幸的是,他们还从wordpress页面中删除了.htm和.html(我认为它们最初都以php结尾)。现在我看到一些基本功能,比如在.html的wordpress end的可视化编辑器中打开图像编辑器(使用它们会产生404错误)。

所以问题是:有没有办法将我的重写限制在某些目录中,所以Wordpress函数不受阻碍?

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

您需要添加重写条件,例如:

RewriteCond $1 !^(dontrewrite\.php)

您可以在其中添加RegEx表达式以省略某些目录/文件夹/文件类型。

答案 1 :(得分:1)

您可以尝试这样的事情:

    RewriteEngine On

# assuming wordpress is installed in blog directory
RewriteRule ^blog(/.*|)$ - [L] # don't take any action

RewriteRule ^moreinfo/(.*)$ http://www.kgstiles.com/moreinfo$1 [R=301,L]
RewriteRule ^healthsolutions/(.*)$ http://www.kgstiles.com/healthsolutions$1 [R=301,L]
RewriteRule ^(.*)\.html$ $1/ [R=301,L]
RewriteRule ^(.*)\.htm$ $1/ [R=301,L]