htaccess中DirectoryIndex的正则表达式

时间:2016-08-30 16:42:32

标签: php apache .htaccess

很抱歉,如果我复制一些关于.htaccess的讨论。但我没有找到我的问题的直接答案。 他们来了: 1.我试图从主目录和子目录中的URL中删除index.php。 到目前为止,我已经达到了以下两个规则(一个用于主目录,另一个用于子目录):

# removes index.php (in public_html)
RewriteRule ^index.php$ / [QSA,R]

# removes index.php (in all directories exept public_html)
RewriteRule ^(.*?)/index\.php /$1 [R=301,R]

有没有办法用一条通用规则制作它?

  1. 我还有很多子目录索引文件,其中不同的前缀以-index结尾: bla-index,foo-index,prefix-index等。我想使用某种正则表达式将它们全部用作DirectoryIndex。 以下规则删除了prefix-index.php

    #removes prefix-index.php (in all directories exept public_html)
    RewriteRule ^(.*)/(.*)index.php /$1 [R=301,R]
    
  2. 这正是我想要的,但现在我有403错误,因为 htaccess说:

    DirectoryIndex index.php
    

    我为DirectoryIndex尝试了不同的正则表达式但没有成功。请帮忙!

    P.S。我只能使用htaccess而不是httpd.conf

1 个答案:

答案 0 :(得分:0)

您可以使用站点根目录中的此代码删除index.php .htaccess:

DirectoryIndex index.php
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{THE_REQUEST} \s(.*)index\.php[?\s] [NC]
RewriteRule ^ %1 [L,R=301,NE]