我在服务器将 domain.com/index 解释为 domain.com/index.php 时遇到问题。这与我的 URL 结构有关。
我创建了一个 .htaccess 文件,其中包含以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
因此,如果我输入 URL domain.com/index/about 我想从中获取 index/about $_GET['url']
。但它是空白的。如果我键入任何其他不以 index 开头的 URL,例如 domain.com/foo/bar,我会得到预期的结果。
我知道这是因为RewriteCond %{REQUEST_FILENAME} !-f
如果存在具有相同文件名的文件,则会忽略任何重写。
因此,只要 URL 不涉及单词 index 或其他目录或文件名,我的 RewriteRules 就会给我想要的结果。这一切都很好,因为我在当前目录中没有其他目录或文件。
所以问题是;我可以让它更具体,比如忽略 filename.php 而不仅仅是文件名吗?这意味着domain.com/index/about应该工作,但不是domain.com/index.php/about。
附带问题:为什么domain.com/index/about无论如何都不起作用?我没有名为 index/about 的目录,也没有名为 index/about 的文件。为什么它将 index/something 解释为 index.php/something 毫无意义,因为我不能在文件中有目录。