且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

覆盖使用htaccess的阿帕奇重写规则

更新时间:2023-09-18 23:32:58

尝试重定向 / foo_bar这样的名称 /富

当阿帕奇通过他们多次,而当你的打开调试。我觉得发生了什么你的情况是,你想在第一遍匹配URI,但是Apache已经就修改 / foo_bar这样的名称

此外,作为调试的问题,你应该尝试重新创建你控制的环境问题。询问你的系统管理员为全球配置的副本,并镜像设置你限制在

working on a server that hosts multiple domains. Somewhere in apache config is a rewrite rule that is set for ALL domains.

What happens is if a user goes to example.com/foo they are supposed to get redirected to example.com/foo_bar

However, in one domain, I want to override this behavior so that the url stays at example.com/foo and does not redirect. I've been searching and trying various rules and conditions to no avail. I don't have access to the apache config, but I am using .htaccess for some rewrite rules on this domain.

here's my rewrite rules in .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on

    # this isn't working
    # RewriteRule ^(foo)($|/) - [L]

    RewriteBase /

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

    # this didn't work either
    # RewriteRule ^/foo index.php?/$1 [L]
</IfModule>

Try redirecting /foo_bar back to /foo.

When Apache processes the rewrite rules it runs through them multiple times, which you can see when you turn on debugging. I think what's happening in your case is that you're trying to match the URI in the first pass, but Apache has already modified it to /foo_bar.

Also, as a matter of debugging, you should try to recreate the problem in an environment you control. Ask your sysadmin for a copy of the global configuration and mirror the set up you're constrained to.