Apache Mod-Rewrite 规则跳过子目录

Posted

技术标签:

【中文标题】Apache Mod-Rewrite 规则跳过子目录【英文标题】:Apache Mod-Rewrite rule to skip sub directory 【发布时间】:2012-03-23 09:14:07 【问题描述】:

我在一个网站的根目录中有一个应用程序,它有自己的 apache2 mod-rewrite 规则,例如

   RewriteRule ^/([^/]*)/([^/]*)/$ /index.php?page=$1&var1=$2
   RewriteRule ^/([^/]*)/$ /index.php?page=$1

很好,但现在我想将 Wordpress 安装在子目录 /blog 中。 Wordpress 当然在 .htacess 文件中有自己的重写语句,它会为博客以不同的方式重写 url。

如何让根 .htaccess 文件跳过 /blog/ 目录并允许本地 .htaccess mod-rewrite 在浏览博客目录时仍然有效。

【问题讨论】:

【参考方案1】:

你只是在你的第一个 htaccess 中做一个否定

RewriteCond %REQUEST_FILENAME !^/blog/.*$

这应该可以 - 希望!作为规则的前提

【讨论】:

【参考方案2】:

在 DOCUMENT_ROOT 下的 .htaccess 中使用此代码:

RewriteRule ^blog/ - [L]

RewriteRule ^/([^/]*)/([^/]*)/$ index.php?page=$1&var1=$2 [L,QSA]
RewriteRule ^/([^/]*)/$ index.php?page=$1 [L,QSA]

【讨论】:

这不会忽略博客目录中wordpress的规则吗? 不,它不会,因为这个忽略只会在当前的 .htaccess 中有效

以上是关于Apache Mod-Rewrite 规则跳过子目录的主要内容,如果未能解决你的问题,请参考以下文章

405使用mod-rewrite对PHP脚本的PUT请求出错

在 c 中使用 ntfw 时跳过子目录

codeigniter中的mod-rewrite问题

mod-rewrite递归循环

通过 mod-rewrite 创建数千个 url

使用 5 个页面的 mod-Rewrite(通配符子域)