htaccess RewriteCond REQUEST_URI检测不起作用

时间:2013-08-06 20:02:50

标签: .htaccess mod-rewrite

在两种不同类型的URI的情况下,我想要发生两件不同的事情,但我似乎无法阻止第二种情况在第一种情况已被接受的情况下执行。

以下是一个例子:

abc.com
abc.com/asdf
abc.com/en/asdf
abc.com/zh-cn/asdf/asdf

所有这些都应该指向这个RewriteRule:

RewriteRule ^(([a-z]{2})(-[a-z]{2})?)(/([a-z0-9-\./]*))?$ /index.php?lng=$1&tpl=$4 [QSA,L,NC]

第2部分:

abc.com/myadmin/
abc.com/myadmin/asdf
abc.com/myadmin/en/asdf
abc.com/myadmin/zh-cn/asdf/asdf

所有这些都应该指向这个RewriteRule:

RewriteRule ^myadmin/(([a-z]{2})(-[a-z]{2})?)(/([a-z0-9-\./]*))?$ /myadmin/index.php?lng=$1&tpl=$4 [QSA,L,NC]

我试图实现这一目标的方法是叠加以下条件:

RewriteCond %{REQUEST_URI} !^/myadmin/
RewriteRule ^(([a-z]{2})(-[a-z]{2})?)(/([a-z0-9-\./]*))?$ /index.php?lng=$1&tpl=$4 [QSA,L,NC]

RewriteCond %{REQUEST_URI} ^/myadmin/
RewriteRule ^myadmin/(([a-z]{2})(-[a-z]{2})?)(/([a-z0-9-\./]*))?$ /myadmin/index.php?vlng=$1&tpl=$4 [QSA,L,NC]

但不管我做什么,两条规则仍然执行。也许我这样做是正确的,并且辅助执行在php模板中进一步发生,我不确定。我只需要知道我到目前为止所完成的工作是否很好。所有。

2 个答案:

答案 0 :(得分:1)

替换此条件:

RewriteCond %{REQUEST_URI} !^/myadmin/

有了这两个:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 

全部放在一起:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^myadmin/(([a-z]{2})(-[a-z]{2})?)(/([a-z0-9-\./]*))?$ /myadmin/index.php?vlng=$1&tpl=$4 [QSA,L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(([a-z]{2})(-[a-z]{2})?)(/([a-z0-9-\./]*))?$ /index.php?lng=$1&tpl=$4 [QSA,L,NC]

答案 1 :(得分:0)

好的,我发现了这个问题,部分我的错误是假设我的Chrome浏览器中的清除缓存扩展程序一次仅在一个标签页上工作,并且该扩展程序中的默认设置在激活扩展程序后自动重新加载所有标签

与大多数开发人员一样,我在开发访问我网站的测试区域,开发工具和技术资源时,在我的浏览器中随时打开了5到10个选项卡。当我处理代码时,我通常亲自手工清理所有缓存,以便我知道它已经完成了,在这种情况下,我选择在我的Chrome浏览器中添加一个名为“Clear Cache”的新扩展来帮助我解决这个问题。更快一点,因为我做了很多小的改动,我每次都需要进行干净的测试。我没有意识到的是,当你激活扩展时,它也会清除所有其他标签的缓存。我也没有注意到默认设置被设置为在执行清洁后自动重新加载它们。因为它也没有显示它正在重新加载所有这些其他选项卡,我不知道它正在重新加载我打开的标签,我正在处理的网站主页负责加载cookie。

总结一下,当我在我的网站上工作时,在一个标签中测试对我的管理区域的更改我一直看到cookie更新,这些更新只能来自我网站的公共方面,并且它一直让我觉得还有一些问题我的htaccess改变了。我意识到,经过两天的故障排除后,为了让事情变得简单而添加的方便花花公子扩展实际上是重新加载浏览器中的所有选项卡而不让我知道,所有其他调用都负责持续返回可能的cookie只是由我网站的公共方面生成,这让我感到困惑。在此之后,我将再次手动清理缓存。