在root目录和文件夹目录中运行htaccess时遇到麻烦

时间:2012-06-18 20:01:33

标签: apache .htaccess

我正在使用以下内容在网址中添加对.php文件扩展名的支持:

RewriteEngine On
RewriteRule ^/?([a-z]+)$ $1.php [L]

例如,如果网址为www.doamin.com/create,则会调用create.php

如果我将.htaccess文件粘贴到根文件夹中,并调用www.doamin.com/notes/create,则会收到错误消息。如果我将我的.htaccess文件粘贴到notes文件夹中,它运行正常。

为什么root文件不支持该文件?

1 个答案:

答案 0 :(得分:0)

尝试在RewriteRule

之前添加此内容
RewriteCond %{REQUEST_URI} !\.php$

当你的规则在docurment根目录中时,它会无限循环:

  1. URI = notes / create
  2. apply rule,URI = notes / create.php
  3. apply rule,URI = notes / create.php.php
  4. apply rule,URI = notes / create.php.php.php
  5. 您需要添加一个条件,以便在URI以.php结尾时不要应用该规则。您可以添加的另一个条件是检查URI是否不存在(例如,如果create.php文件不存在)。所以你也应该在你的规则之前添加这些:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d