Mod重写以删除子目录和文件扩展名而不破坏DirectoryIndex

时间:2015-07-21 19:20:01

标签: apache .htaccess mod-rewrite url-rewriting friendly-url

我将所有网站页面都放在像这样的子目录中......

http://www.example.com/pages/myfile.php

我希望网址看起来像这样......

http://www.example.com/myfile

其中两者名称为pages的子目录和.php文件扩展名已从网址中删除。

我最近的(部分)尝试......

Options All -Indexes +FollowSymLinks

DirectoryIndex index.php

RewriteEngine On
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/pages%{REQUEST_URI}\.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/pages%{REQUEST_URI} -d
RewriteRule ^(.*)$ /pages/$1.php [NC,L]

然而,这完全打破DirectoryIndex。当我转到http://www.example.com/http://www.example.com/foo/时,我收到404错误,而不是index.php定义的默认为DirectoryIndex

显然,它将所有内容视为文件名,而不是识别缺少文件名(目录)并尝试使用index.php

我尝试将this solution合并到我的中,它解决了DirectoryIndex问题,但它打破了其他所有问题。

有解决方案吗?请在答案中加入详细说明,以便了解我出错的地点和方式。

1 个答案:

答案 0 :(得分:2)

在root .htaccess中试试这个:

        <span style="vertical-align:top;"><a href="#myModal" role="button" class="btn btn-small btn-red" data-toggle="modal"> Delete League </a></span>

<!-- start of modal dialog box -->
<div class="modal hide fade" id="myModal">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
    <h3>Modal header</h3>
  </div>
  <div class="modal-body">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
    <p>Ut nunc libero, sodales venenatis gravida nec, posuere quis ante.
      Phasellus lobortis molestie felis, vitae sagittis ipsum vehicula lobortis.
      </p>
    <p>Quisque lacus mi, gravida vel facilisis ac, malesuada vel augue.
      In ac leo eget tellus aliquet aliquam. Nam faucibus urna ac justo fringilla eu
      sollicitudin quam pretium. Proin pellentesque adipiscing sapien, non dignissim
      massa porttitor dictum. Integer tempor aliquam arcu, eget vehicula ipsum auctor at.</p>
  </div>
  <div class="modal-footer" data-dismiss="modal">
    <a href="#" class="btn">Close</a>
    <a href="#" class="btn btn-green">Save changes</a>
  </div>
</div>
<%-- end of modal dialog box --%>