编辑:这个问题主要是通过下面的答案解决的,但它也提出了一个新问题。如果我从 .htaccess 文件中删除“RewriteCond %{REQUEST_FILENAME} !=F”,如果我向 stock.com/register 发出请求,我将再次被重定向到 stock.com/index.php?page=index.php。我可以接受它需要在那里,但我试图理解为什么删除这行代码会导致这种行为。我知道它允许访问者访问实际文件,例如图像,但我不明白它与 URL 的重定向/重新路由(例如 stock.com/register)有何关系。如果有人能解释一下,我将不胜感激。
尝试为我在 Wampserver 上本地开发的简单 MVC 站点获取漂亮的 URL,仅用于学习目的。我有以下 .htaccess 代码设置,以便将任何 URL 请求路由回 index.php 控制器,该控制器根据“页面”的 $_GET 值提供不同的内容。
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !=D
RewriteCond %{REQUEST_FILENAME} !=F
RewriteRule ^([-\w.]+)$ index.php\?page=$1 [R=302,L]
我将它设置为 R=302,这样我就可以看到它重定向我的位置。我设置的主机名是 stock.com。如果我去 stock.com,这很好用。但如果我尝试访问 stock.com/register,我会被重定向到 stock.com/index.php?page=index.php。如果我从正则表达式中取出点,这一切都很好,但是我无法在页面/文件名中包含点。没有必要,但我这样做是为了学习目的,所以我想知道这里的解决方案是什么。我已经尝试过转义点和不转义。谢谢!