htaccess filesmatch(htm | html | php)除了两个特定文件?

时间:2015-04-22 16:43:53

标签: .htaccess

我想自动为所有php,htm,html页面添加X-Robots-Tag标题,除/index.phpforgot.php之外。

这将涵盖所有这些:

<FilesMatch "\.(htm|html|php)$">
    <IfModule mod_headers.c>
                Header set X-Robots-Tag "noindex, nofollow"
    </IfModule>
</FilesMatch>

但是如何从/index.php指令中排除/forgot.phpFilesMatch

我想要它做什么:

适用于所有.htm,.html,.php文件

排除/index.(htm|html|php)/forgot.(htm|html|php),但不是*/index.php应该有效。

希望这是有道理的...我只是想将它从网站底部的那两个特定文件中排除。

更新tester上玩这个,但仍有一些问题:

(?!.*/(index.php|forgot))(^.*\.(php|htm|html)$)

这不包括www.mysite.com/folder/index.php

等网址

2 个答案:

答案 0 :(得分:1)

我一直在看这个错误。这是我正在使用的:

# BEGIN noindex,nofollow on all but login and forgot page
<IfModule mod_env.c>
RewriteRule ^(index\.php|forgot\.php)$ - [E=exclude:1]
    <FilesMatch "\.(php|html?)$">
        <IfModule mod_headers.c>
            Header set X-Robots-Tag "noindex, nofollow" env=!exclude
        </IfModule>
    </FilesMatch>
</IfModule>

答案 1 :(得分:-1)

你有什么尝试?你尝试过这样的事吗?

<FilesMatch "^(^index|^forgot)\.(htm|html|php)$">

只想指出正确的方向。我还没有尝试过,但它可能会有点贪婪并匹配index_example.php之类的文件。不只是index.php

这些人对RegEx有很好的参考:http://www.regular-expressions.info/