当前位置: 首页 > 知识库问答 >
问题:

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

诸葛卜霸
2023-10-17

我用的虚拟主机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>

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

共有1个答案

戴凯歌
2023-10-17

从你提供的信息来看,你使用的是 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. 如果可能的话,尝试在不同的服务器或环境中测试相同的配置。

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

 类似资料:
  • 两个虚拟主机(纯静态-html 支持) - Two Virtual Hosts, Serving Static Files http { : server { : listen 80; : server_name www.domain1.com; : access_log logs/domain1.access.log main; : location / {

  • 主要内容:Apache虚拟主机类型,3. 虚拟主机配置示例Apache Web服务器可以在SAME服务器上托管多个网站。每个网站不需要单独的服务器机器和apache软件。这可以使用虚拟主机或VHost的概念来实现。 要在Web服务器上托管的任何域(网站应用)都将在apache配置文件中具有单独的条目。 Apache虚拟主机类型 Apache虚拟主机类型有两种 - 基于名称的虚拟主机 基于地址或基于IP的虚拟主机。 1. 基于名称的虚拟主机 基于名称的虚拟

  • 虚拟主机是路由配置中的顶层配置。每个虚拟主机都有一个逻辑名称以及一组域列表,会根据传入请求的主机头路由到对应的域。这允许为单个监听器配置多个顶级域的路径树。一旦基于域选择了虚拟主机,就会进行路由处理,以便查找并路由到相应上游集群或者是否执行重定向。 { "name": "...", "domains": [], "routes": [], "require_ssl": "...",

  • 虚拟主机名使用server_name指令定义,用于决定由某台虚拟主机来处理请求。具体请参考《nginx如何处理一个请求》。虚拟主机名可以使用确切的名字,通配符,或者是正则表达式来定义: server { listen 80; server_name example.org www.example.org; ... } server { liste

  • 本文档说明了如何使用基于域名的虚拟主机。 基于域名的虚拟主机和基于IP的虚拟主机比较 基于IP的虚拟主机使用连接的IP地址来决定相应的虚拟主机。这样,你就需要为每个虚拟主机分配一个独立的IP地址。而基于域名的虚拟主机是根据客户端提交的HTTP头中标识主机名的部分决定的。使用这种技术,很多虚拟主机可以共享同一个IP地址。 基于域名的虚拟主机相对比较简单,因为你只需要配置你的DNS服务器将每个主机名映

  • 我在本地机器(Mac)上工作,其中有一个名为sqlvm的遗留虚拟机(这意味着我可以通过http://sqlvm:从本地主机访问这个虚拟机)。现在,我在应该连接到vm的同一个本地主机(我的Mac)中设置了几个docker容器(使用docker-compose)。< code>pymysql会引发一个异常: 如何将外部的“sqlvm”公开给内部 Docker 网络? 编辑:我尝试在yml文件中为相关容