2014-07-09 25 views
1

我在我们的xxx.yyy.edu网站上的根目录中有以下.htaccess文件。在htaccess文件中正则表达式与根目录不匹配

<FilesMatch "(.+)\.php"> 
    AuthType shibboleth 
    ShibRequestSetting requireSession 1 
    ShibUseHeaders On 
    Require valid-user 
    ShibRequestSetting redirectToSSL 443 
</FilesMatch> 

这应该只匹配以.php结尾的文件,并匹配所有以.php结尾的文件,然后强制认证。这部分似乎工作正常。

但是,它也匹配根网址http://xxx.yyy.eduhttp://xxx.yyy.edu/。这不是一件好事,因为它迫使网站的根目录得到认证。

它不符合xxx.yyy.edu/index.htm或任何在域名后有任何内容的任何网址,如xxx.yyy.edu/students.htm或者甚至xxx.yyy.edu/x

我在www.regexr.com上测试过它,并且它不匹配那里的根网址。

任何想法/建议表示赞赏。

回答

2

由于您的着陆页默认页面设置为index.php,因此您将获得验证对话框。

有这种FilesMatch负先行,以避免index.php从认证:

<FilesMatch "^(?!index\.php$).+?\.php$"> 
    AuthType shibboleth 
    ShibRequestSetting requireSession 1 
    ShibUseHeaders On 
    Require valid-user 
    ShibRequestSetting redirectToSSL 443 
</FilesMatch> 
+1

谢谢anubhava;救了我后:-) – TerryE

+1

我发现它是index.php,并已使用#DirectoryIndex index.htm作为解决方案。不过,我认为你的解决方案更好,并切换到它。 这也有助于我更好地理解“负面看法,所以双重感谢!:-) 我会标记你的答案,但我没有足够的声誉,对不起 – JimV

+0

不客气,很高兴它的工作只要答案被接受就足够了。 – anubhava

0

听起来好像它是匹配换行符与“点”(一个XRegExp)。尝试类似\w+:[\d\w\s\./]+\.php

+1

罗,约什 - 错误的猜测。 – TerryE

+0

确实。我的坏人,伙计。 –

+0

没关系。我没有-1你,因为你是新的发布,并不想你的代表的一半:) – TerryE