我的本地服务器的根.htaccess包含以下规则,仅此而已:
RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.*)$ site/$1
目的是秘密地将所有URL重新“植根”到\site\
文件夹,以使该文件夹之外的所有内容都以某种方式变为私有。这里的RewriteCond可以防止循环到site/site/site/site/...
让我们在服务器上创建一个空的\site\
文件夹。
现在,在Web浏览器中,我将导航至boop/
和boop
。两个页面都给了我预期的404,表示在服务器上找不到site/boop
和site/boop/
。符合预期。
我现在将创建文件\site\boop\index.php
。
导航到boop/
时,新创建的页面将按预期显示。
但是,当我导航到boop
...时,事情变得一团糟:
我的浏览器被明确重定向(301)到site/boop/
,这反过来导致服务器在内部重定向到/site/site/boop/
,并在404处结束。
(创建一个空的\boop\
文件夹足以使此行为发生。index.php
只是在这里检查重定向在第一种情况下是否起作用。)
这个301来自哪里?与url中的尾部斜杠有什么关系?
我一直在寻找斜杠的含义,但是我发现所有的资源都说“从技术上讲”毫无意义,仅谈论美学惯例。
我正在使用64位WAMP 3.0.6,Apache 2.4.23和PHP 7.0.10运行本地服务器