【问题标题】:How to exclude certain URI from Apache mod_rewrite (Apache 2.2) in .htaccess如何从 .htaccess 中的 Apache mod_rewrite (Apache 2.2) 中排除某些 URI
【发布时间】:2017-02-21 19:10:51
【问题描述】:

我有 .htaccess 文件,该文件基于检测传入的 URI 并为 Codeigniter 以“index.php”为前缀成功地重定向请求,如下所示:

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 的任何请求都不会被修改?

提前感谢您的任何建议。

【问题讨论】:

  • 谢谢,但这没有用。这里的“模块”请求中没有任何内容。这只是 .so 文件所在的位置,并且在 httpd.conf 的 LoadModule 指令中被引用,这不是更适合查看 REQUEST_URI 并查看它是否以“mymodule”开头吗?

标签: apache .htaccess mod-rewrite


【解决方案1】:

要排除以mymodule 开头的任何内容,请在RewriteRule 前面添加另一个条件

RewriteCond %{REQUEST_URI} !^/mymodule

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 2016-01-19
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多