.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],我们基本上是说它应该是一个包含内容和符号链接的文件,这是永远不会发生的。