用的虚拟主机去掉index.php存在问题?

我用的虚拟主机php的,如这个地址:

http://www.hailifuture.com/page/2.html

其实打开

http://www.hailifuture.com/index.php/page/2.html

这样才是对的,我在.htaccess中设置了

<IfModule mod_rewrite.c>
      Options +FollowSymlinks -Multiviews
      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>

就成了第一个链接那样的,打开那个都是首页,这是哪里出问题了?

阅读 693
avatarAI BotBETA

从你提供的信息来看,你使用的是 Apache 服务器,并且希望通过 .htaccess 文件来重写 URL。你的目标是让 URL 中的 index.php 部分被隐藏起来。

你的 .htaccess 文件中的规则看起来是正确的,它应该可以将 http://www.hailifuture.com/page/2.html 这样的 URL 重写为 http://www.hailifuture.com/index.php/page/2.html

然而,从你描述的情况来看,打开第一个链接时会直接显示首页,而不是重写后的 URL。这可能是由于以下原因:

  1. 服务器配置问题:有时,服务器的配置可能会覆盖 .htaccess 文件的规则。请确保你的虚拟主机允许使用 .htaccess 文件,并且相关的模块(如 mod_rewrite)已经启用。
  2. 规则顺序:有时 .htaccess 文件中的规则顺序可能会影响结果。如果有其他重写规则或优先级更高的规则,它们可能会影响你的规则。
  3. 文件或目录权限:确保 .htaccess 文件和相关文件或目录的权限设置正确,并且服务器可以读取它们。
  4. 路由问题:如果你在服务器端使用某种框架或路由系统,它可能具有自己的路由规则,这可能会干扰 .htaccess 的重写规则。
  5. 浏览器缓存:请确保清除浏览器缓存,因为浏览器可能会缓存重写后的 URL。

为了更好地诊断问题,你可以尝试以下步骤:

  1. 检查服务器的错误日志,看是否有与重写规则相关的任何错误或警告。
  2. 如果可能的话,尝试在服务器上禁用其他可能影响重写规则的模块或配置。
  3. 检查 .htaccess 文件的权限设置。
  4. 如果可能的话,尝试在不同的服务器或环境中测试相同的配置。

由于问题的确切原因可能因环境和配置而异,所以以上建议仅供参考。如果问题仍然存在,最好提供更多的详细信息,以便更准确地诊断和解决问题。

1 个回答

说实话,没看懂你提的问题;

如果是为什么会隐藏index.php,因为你开启了apache .htaccess的路由重写,这个是适用于单入口文件的php应用,像ThinkPHP、Yii、Laravel等都是单入口应用。

这个就是路由规则:^(.*)$ index.php?/$1;如果你想知道什么意思,可以去了解一下正则相关知识。

你不想隐藏index.php的话,就把 RewriteEngine on改成RewriteEngine off;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进