1

在两种不同类型的 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 模板中发生得更远,我不确定。我只需要知道到目前为止我所做的是否看起来不错,大家。

4

2 回答 2

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]
于 2013-08-06T20:38:18.737 回答
0

好的,我发现了问题,部分原因是我假设我的 Chrome 浏览器中的 Clear Cache 扩展程序一次只能在一个选项卡上工作,并且该扩展程序中的默认设置会在激活扩展程序后自动重新加载所有选项卡

像大多数开发人员一样,在开发访问我的站点、开发工具和技术资源的测试区域时,我在任何给定时刻都会在浏览器中打开 5-10 个选项卡。当我处理代码时,我通常会亲自手动完成所有缓存清理,以便我知道它确实完成了,在这种情况下,我选择在我的 Chrome 浏览器中添加一个名为“Clear Cache”的新扩展来帮助我解决这个问题快一点,因为我做了很多小改动,每次都需要进行干净的测试。我没有意识到的是,当您激活扩展程序时,它还会清除所有其他选项卡的缓存。我也没有注意到设置为在执行清洁后自动重新加载它们的默认设置。因为它也没有

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

于 2013-08-08T19:55:57.120 回答