htaccess中DirectoryIndex的正则表达式


Regular expression for DirectoryIndex in 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]

是否有一种方法可以用一个共同的规则?

  • 我也有相当多的子目录索引文件,不同的前缀以-index结尾:Bla-index、foo-index、前缀-index等。我想让它们都使用某种正则表达式作为DirectoryIndex工作。下面的规则删除了prefix-index.php

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

    DirectoryIndex index.php
    

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

    注:我只能使用httpd.conf

    您可以使用以下代码在站点root .htaccess中删除index.php:

    DirectoryIndex index.php
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{THE_REQUEST} 's(.*)index'.php[?'s] [NC]
    RewriteRule ^ %1 [L,R=301,NE]