如何防止.htaccess重定向中的一个文件?

时间:2012-04-23 10:04:57

标签: php apache .htaccess

我正在创建php前端控制器。这是我的.htaccess文件。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    (.*) controller.php    [L]
</IfModule>

此代码将所有网址重定向到controller.php。我需要避免将index.php重定向到controller.php。所有其他网址都应重定向到controller.php

2 个答案:

答案 0 :(得分:5)

您可以使用以下语法进行例外处理:

RewriteRule name_of_page_to_exclude.php - [L]

破折号(-)很重要。 [L]确保如果触发此规则,则它将是最后一个将被处理的规则。很自然地,在问题中的规则出现之前,您需要将其放在.htaccess文件的顶部附近:

RewriteEngine on
RewriteRule name_of_page_to_exclude.php - [L]
RewriteRule (.*) controller.php [L]

documentation有以下说法:

  

- (破折号)   短划线表示不应执行替换(现有路径不受影响)。

答案 1 :(得分:0)

添加以下条件:

RewriteCond %{REQUEST_FILENAME} !-f

这将允许任何实际存在的文件,并假设它不会为已存在的其他文件搞乱任何其他文件。