.htaccess为什么不重定向?

.htaccess为什么不重定向?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我有一个.htaccess文件: RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] 如果我理解正确,它应该: 如果创建了具有大小或符号链接的文件,则不执行任何操作

我有一个
.htaccess
文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
如果我理解正确,它应该:

如果创建了具有大小或符号链接的文件,则不执行任何操作, 在任何其他情况下,重定向到
index.php

如果我打开
www.mysite.com/folder/
我会得到
index.php

如果我打开
www.mysite.com/folder/file.php
我会得到
file.php


如果我打开
www.mysite.com/test
,它不是
文件夹
也不是
文件
,我会得到
404错误
,但我应该得到
index.php
。我的错误在哪里?

为什么不把它转过来让它更简单呢

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^.*$ index.php [NC,L]
这应该将所有文件(包含内容)和符号链接重写到index.php,而不做任何其他事情。
行少了,混乱就少了。

谢谢,我需要相反的。因此,不是
-s-l
,而是
-s-l
正确的解决方案?还有一个问题:为什么在你的解决方案中,如果我直接指向我的文件(例如
www.mysite.com/folder/test.php
),我会得到这个文件,而不是
index.php
?那么如果它不是一个包含内容的文件,也不是一个符号链接,你想重定向到index.php?在这种情况下,是的。是的,我这个文件有内容,是一个符号链接,然后我想要这个文件,否则index.php。我编辑了我以前的评论,我知道你是新用户,所以:如果回答了你的问题,请接受这个答案。点击问题左边的复选标记,尝试添加[OR],我们基本上是说它应该是一个包含内容和符号链接的文件,这是永远不会发生的。