我最近在Apache服务器上的URL中遇到了目录请求的一些奇怪行为。我是Apache服务器和HTACCESS的新手,所以也许有人可以填写这个。
如果在服务器上有一个名为“example”的子目录,我尝试通过键入www.example.com/example/来请求此目录,一切都按预期工作。 Apache服务器按预期查找default.php,index.php和其他服务器。如果我输入www.example.com/test并且没有与“test”对应的文件或目录,则会出现预期的404错误。如果你输入www.example.com/example(和www.example.com/example/存在),服务器甚至不会返回404,这就是它变得奇怪的地方。实际上它要么重定向循环,要么最终得到“www.example.com/example不存在或不可用。”来自我的ISP。这是否应该发生?
这是给我一个问题的地方。我有一个简单的HTACCESS文件,可以将所有请求重定向到查询字符串:
Options +FollowSymLinks +MultiViews -Indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^styles/[\d]{10}/(.*)\.(css|jpg|gif)$ styles/$1.$2 [NC,L]
RewriteRule ^scripts/[\d]{10}/(.*)\.(js|jpg|gif)$ scripts/$1.$2 [NC,L]
RewriteRule \.(css|jpe?g|png|gif|js|ico)$ - [L]
RewriteRule ^(.+)$ default.php?page=$1 [QSA,L,NC]
</IfModule>
大约99%的时间都可以正常工作。然后是我上面描述的目录问题。无论HTACCESS是否存在,如果请求的目录没有结束斜杠,一切都会失败,这发生在我的本地服务器和我与Godaddy的共享主机上。事实是,我需要任何和所有的请求,如
www.example.com/example
转到
如default.php?页=示例
即使有目录
/示例/
列出。
另外,我查看了重写日志,如果请求的目录没有斜杠,Apache服务器甚至没有机会处理HTACCESS文件。
有人有任何解决方案吗?