【问题标题】:htaccess rewriterule. I don't want all of them rewritten - How to exclude some pages?htaccess 重写。我不希望所有这些都被重写 - 如何排除某些页面?
【发布时间】:2012-11-29 11:54:44
【问题描述】:

我的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 的可视化编辑器中打开图像编辑器(使用它们会产生 404 错误)。

所以问题是:有什么办法可以将我的重写规则限制在某些目录中,这样 Wordpress 的功能就不会受到阻碍?

感谢任何帮助!

【问题讨论】:

    标签: html wordpress .htaccess mod-rewrite


    【解决方案1】:

    你需要添加一个重写条件,比如:

    RewriteCond $1 !^(dontrewrite\.php)
    

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

    【讨论】:

      【解决方案2】:

      你可以试试这样的:

      重写引擎开启

      # 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]
      

      【讨论】:

      • 好吧 Wordpress 安装在根目录以及许多重定向中,但我相信我尝试允许的所有功能(比如编辑图像都在 wp-content 文件夹中。所以如果我替换上面的“blog”加上wp-content,会不会有同样的效果?
      • 嗯,在这种情况下,这并不容易,因为 WP 无论如何都需要所有请求都通过其根 index.php。明天我将尝试在我的 WP 安装上找到解决方案。
      • 我为文件夹 /wp-content/、/wp-admin/ 和 /wp-includes/ 添加了上述排除项,它运行良好,谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多