我正在开发一个非常动态的系统,我在/和/ somepath中有两个相同的htaccess文件。这个域的原因可以指向/ somepath,但我不知道是不是。
当指向/ somepath时没有问题,但是当它不是我请求/ somepath / page / foo / bar时,/ somepath中的htaccess文件会覆盖/中的那个。在后一种情况下,我不希望/somepath/.htaccess完全运行,或者至少忽略其中的mod_rewrite。
如果我可以检查后一个htaccess是否不在文档根目录中,那么将是一个解决方案。这可能吗?如何将htaccess路径与htacces文件中的文档根进行比较?
两个htaccess文件都是这样的:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule .* uri_handler.php [L]
</IfModule>
有谁知道这里发生了什么? 谢谢!
答案 0 :(得分:0)
我不认为这是可能的。但这听起来像是一种构造错误。将两个.htaccess文件合并为一个会好得多。 (或者/somepath
中的第二个甚至是必要的?为什么?)
在哪种情况下请求的域指向/somepath
?它是一个可以在RewriteCond中使用的不同域吗?
答案 1 :(得分:0)
除非尝试简化您的设置,否则我认为这里最简单的方法是确保.htaccess
中的/somepath
文件无法处理/somepath
的请求。文档根目录为/
。
假设我们都在关于文档根目录的同一页面上,我们可以通过修改/somepath/.htaccess
来实现这一点:
修改:更简单的方法是让它始终请求位于根目录的uri_handler.php
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule .* /uri_handler.php [L]
</IfModule>