我的.htaccess中的递归循环

时间:2010-07-05 12:44:41

标签: apache mod-rewrite

我在向apache .htaccess添加默认重写php和html请求时遇到问题。

我们的想法是为我网站上的内容设置模板,指定文件夹中的内容使用特定模板。它适用于HTML,图像和其他资源;请求很好地重写到模板。但我得到一个递归问题重写请求到php资源,因为该模板也是一个PHP资源...也许在逻辑上足够。

是否有可能将php-to-php限制为单次重写?或者我需要另一种方法吗?

这个规则是我的问题:

RewriteRule ^(.*).(php$) /_templates/default.php?$1.$2 [NC,L]

以下是我的.htaccess ...

...谢谢

# Template rewrites:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(subpages/.*) /_templates/present.php?$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*).html$ /_templates/default.php?$1 [NC,L]
RewriteRule ^(.*).(php$) /_templates/default.php?$1.$2 [NC,L]

2 个答案:

答案 0 :(得分:0)

你可以像这样添加一个RewriteCond:

RewriteCond $1 !^_templates/
RewriteRule ^(.*).php$ /_templates/default.php?$1.php [NC,L,B]

我还添加了B标志,因为您在查询字符串中使用了反向引用。

答案 1 :(得分:0)

您可以添加排除规则:

RewriteRule /_templates/default.php(.*)$ $ 0 [L]

$ 0是原始请求,[L]表示该请求将运行的最后一条规则