我有一个文件夹结构,像这样:
论坛/ .htaccess看起来像这样:
RewriteEngine on RewriteCond %{HTTP_HOST} \.(com|net)$ [NC] # just rewrite if the query comes from an english languaged domain RewriteRule ^(.*)$ ../forum_english/$1 #some more RewriteRules from another forum. I don't know, if I am allowed to show them. They should work well, side by side.
forum_english / .htaccess是默认的MyBB-htaccess-File 。
可悲的是这会导致无限循环。 为了防止这种情况,我必须插入一个跳过forum_english / .htaccess文件的[L]
-Flag(但是这个文件中的规则也应该被执行)。 我也尝试了[N=2]
标志,但是仍然无限循环。
我使用Apache 2.2.17,并且无法访问error_logs或/ etc / apache2 / sites-enabled /中的文件。
任何想法我做错了什么?
如果用户通过.com或.net到达,他们可能会继续这样做,如果你已经重写请求到一个相对的位置,如你的例子所示。 换句话说, HTTP_HOST
条件将始终为真。
.*
正则expression式相当于“匹配(几乎)任何字符0次或更多次”,而^
(string开始)和$
(string结束)标记在这里不会做任何特别的事情,因为匹配。 因为该模式将有效匹配任何string,重写为../forum_english
后的结果path也将匹配。
本质上,redirect循环的发生是因为你保证两个条件始终为真。
我认为你应该考虑一下确定的条件,这些条件表明需要重写。 用户redirect之前(但不是之后)会发生什么样的模式? 一旦你find了这些条件,那么你可以研究如何创build合适的mod_rewrite规则。