更具体的重写规则不适用

时间:2014-08-22 22:34:19

标签: apache .htaccess mod-rewrite

以下是我的重写规则,

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^mypage$ index1.php [L]
    RewriteRule ^.*$ index2.php [L]
</IfModule>

我想URI“/ mypage”将重写为index1.php,否则重写为index2.php。但URI“/ mypage”总是重写为index2.php,我不明白为什么。我该如何解决?

1 个答案:

答案 0 :(得分:0)

是的,您的规则的编写方式是/mypage/?被重写为/index1.php,然后第二次重写规则会将/index1.php重写为/index2.php。所以最后得到/index2.php

要修复此行为,请遵守此规则

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteRule ^mypage/?$ index1.php [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^.*$ index2.php [L]
</IfModule>