如何:在3种不同条件下从.htaccess调用php文件

如何:在3种不同条件下从.htaccess调用php文件,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我需要在一个.htaccess文件中检查三个条件,如果其中任何一个条件适用,则一次性重写url。 为了重写url,我创建了一个php文件: <?php $sURL = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo '$sURL = ' . $sURL . '<br />'; $sURL = strtolower($sURL); if (substr($sURL, 0, 4) != 'www.') { $s

我需要在一个.htaccess文件中检查三个条件,如果其中任何一个条件适用,则一次性重写url。 为了重写url,我创建了一个php文件:

<?php
$sURL = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
echo '$sURL = ' . $sURL . '<br />';
$sURL = strtolower($sURL);
if (substr($sURL, 0, 4) != 'www.') {
    $sURL = 'www.' . $sURL;
}
if (substr($sURL, -10) == 'index.html') {
    $sURL = substr($sURL, 0, -10);
}
echo 'Location: http://' . $sURL;
#header('Location: http://' . $sURL, true, 301);
?>
我让它在第一个和第二个条件下工作,没有注释行,有或在第二行上,但是在我放入HASCAPS部分之后,即使我注释掉HASCAPS部分,它也不会再次工作

我已经花了好几个小时在这上面了,但是我找不到哪里出了问题。 任何帮助,甚至是正确方向上的暗示,都将不胜感激

问候

勒内

编辑:

我现在正在一步一步地看它(意味着它自己的每一个连续),我想知道为什么这样做有效:

RewriteRule ^(.*)index.html $1 [R=301,L]
但这并不是:

RewriteCond %{REQUEST_FILENAME} index\.html [NC]
RewriteRule ^(.*) main.redirect.php [QSA,L]
这一个也不管用:

RewriteRule ^(.*)index.html main.redirect.php [L]

有什么想法吗?

我投了赞成票以抵消反对票。我猜这是因为你没有从.htaccess调用php文件,但我在这方面不是专业人士。谢谢Theolodis!嗯,.htaccess中的最后一个调用几乎总是指向html或php文件。在.htaccess中,您只能重定向浏览器或调用文件。这看起来像是serverfault.com的一个问题,因为它更多地是关于Apache配置的。无论如何,您可能应该告诉我们最终想要实现什么,因为看起来您也将使用PHP文件进行重定向,而且您最好通过Apache重定向来完成所有事情。
RewriteRule ^(.*)index.html main.redirect.php [L]