php 报 Not Found The requested URL /index.php was not found on this server.

本文解决在ThinkPHP5框架中遇到的URL重写问题,通过修改.htaccess文件和配置,使得首页以外的链接正常工作,避免NotFound错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:首页没问题,下面的链接报错,Not FoundThe requested URL /index/index/shop_index/system_platform_id/1.html
链接路径前面加index.php就不报错了

1.看文档
https://www.kancloud.cn/manual/thinkphp5/118012
在这里插入图片描述
2.加入文件.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]

  RewriteCond %{SERVER_PORT} !^443$
  RewriteCond %{SERVER_PORT} !^80$      //不自动跳https访问,http访问也成功
  RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</IfModule>
<think>好的,用户的问题是解决在Apache 2.4.63 Debian环境下部署YZMCMS时遇到的404 Not Found错误。我需要先分析可能的原因,然后给出解决方案。 首先,404错误通常意味着服务器找不到请求的资源。可能的原因有几个: 1. **URL重写未启用**:很多CMS系统,比如YZMCMS,依赖URL重写来实现友好的URL结构。如果Apache的mod_rewrite模块没有启用,或者网站的.htaccess文件没有被正确读取,就会导致404错误。 2. **文件权限问题**:YZMCMS的文件或目录权限设置不正确,导致Apache无法访问必要的文件。 3. **路径配置错误**:Apache的虚拟主机配置中,DocumentRoot或Directory设置不正确,指向了错误的目录。 4. **.htaccess规则问题**:YZMCMS自带的.htaccess文件可能存在错误,或者没有被正确配置,导致重写规则失效。 接下来,结合用户提供的引用内容,特别是引用[1]中提到的隐藏Apache版本信息的方法,这可能涉及到修改Apache的配置,但和404错误关联不大。不过引用[3]提到mod_proxy的配置问题,可能提示需要检查其他模块的配置是否干扰了正常请求的处理。 首先,检查mod_rewrite是否启用。Debian系统下,通常使用a2enmod来启用模块。用户需要运行命令启用mod_rewrite,并确保Apache配置中AllowOverride设置为All,以便读取.htaccess文件。 其次,检查文件权限。确保网站目录的文件所有者为Apache用户(比如www-data),并且目录权限正确,通常是755,文件为644。 然后,确认虚拟主机配置中的DocumentRoot是否正确指向YZMCMS的安装目录,并且<Directory>部分允许覆盖,即AllowOverride All。 此外,可能需要检查YZMCMS的.htaccess文件是否存在,并且规则是否正确。有时候,Apache的配置可能禁止.htaccess覆盖,导致规则不生效。 还有,检查Apache的错误日志,通常在/var/log/apache2/error.log,查看具体的错误信息,有助于定位问题。比如,是否提示文件不存在,或者权限被拒绝。 另外,考虑是否开启了多版本模块(如mod_negotiation),导致文件路径解析错误。但这种情况可能较少见。 最后,用户可能在安装YZMCMS时,没有正确设置基础URL,或者安装过程中某些步骤未完成,比如没有生成正确的配置文件,这也可能导致路由错误,从而引发404。 总结下来,解决方案步骤应该是: 1. 启用mod_rewrite模块,并配置AllowOverride。 2. 检查文件和目录权限。 3. 验证虚拟主机配置。 4. 检查.htaccess文件。 5. 查看错误日志获取详细信息。</think>### YZMCMS Apache 2.4.63 Debian 部署 404 Not Found 解决方案 #### 1. 检查URL重写模块配置(核心问题) YZMCMS依赖Apache的`mod_rewrite`模块实现路由功能。若未启用或配置错误会导致404错误: ```bash # 启用mod_rewrite模块 sudo a2enmod rewrite # 修改站点配置文件(如/etc/apache2/sites-available/000-default.conf) <Directory "/var/www/html/yzcms"> Options FollowSymLinks AllowOverride All # 必须允许.htaccess生效 Require all granted </Directory> # 重启Apache systemctl restart apache2 ``` #### 2. 验证文件权限与路径 确保项目文件权限正确且路径匹配: ```bash # 设置文件所有权(假设Apache用户为www-data) chown -R www-data:www-data /var/www/html/yzcms # 设置目录权限 find /var/www/html/yzcms -type d -exec chmod 755 {} \; find /var/www/html/yzcms -type f -exec chmod 644 {} \; ``` #### 3. 检查.htaccess文件有效性 确认项目根目录存在`.htaccess`文件且包含有效规则,典型配置示例: ``` RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] ``` #### 4. 排查多虚拟主机冲突 若服务器存在多个站点,检查端口绑定和`ServerName`配置: ```bash apachectl -S # 查看生效的虚拟主机配置 ``` #### 5. 检查安全模块冲突 禁用可能拦截请求的安全模块进行测试: ```bash a2dismod security2 # 临时禁用mod_security systemctl restart apache2 ``` #### 6. 查看错误日志定位具体原因 通过日志获取详细错误信息: ```bash tail -f /var/log/apache2/error.log # 实时监控错误日志 ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值