如何在.htaccess中从Apache mod_rewrite(Apache 2.2)中排除某些URI

时间:2017-02-21 19:10:51

标签: apache .htaccess mod-rewrite

我有.htaccess文件,它根据检测到的传入URI并使用" index.php"前缀成功地重定向请求。对于Codeigniter,像这样:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

我现在只是构建自定义Apache模块,我需要排除对该模块的任何URI请求。我的httpd.conf将显示如下内容:

LoadModule my_module        modules/libmod_my.so
<Location /mymodule>
    SetHandler mod_my-handler
</Location>

这应该可以正常工作,但.htaccess规则正在捕获对/ mymodule的任何请求并将其转换为/index.php/mymodule

.htaccess规则成功绕过对有效文件(图形,css,js等)的任何请求。

修改.htaccess的最佳方法是让它绕过这样的任何请求:

http://localhost/mymodule/function

这样可以排除对/ mymodule的任何请求被修改吗?

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

要排除以mymodule开头的任何内容,请在RewriteRule

前面添加其他条件
RewriteCond %{REQUEST_URI} !^/mymodule

另一种方法(虽然我还没试过这个)可能是关闭mod_rewrite指令中的Location

<Location /mymodule>
    SetHandler mod_my-handler
    RewriteEngine off
</Location>