PHP Smarty CMS站点迁移到XAMPP本地后子页面全部返回404如何解决?
问题解决思路
- 开启Apache的rewrite模块
打开XAMPP控制面板,点击Apache右侧的「Config」按钮,选择httpd.conf配置文件,找到LoadModule rewrite_module modules/mod_rewrite.so这一行,删除行首的#注释符,保存文件后重启Apache服务。 - 确认站点根目录存在.htaccess伪静态规则文件
从FTP下载文件时,Linux服务器上.开头的隐藏文件默认不会被显示,很可能漏下了原站点的.htaccess规则。你可以联系原开发者索要对应规则文件,放到本地站点根目录C:\xampp\htdocs\netcomplex-1下。如果暂时无法获取,可以先尝试通用的CMS伪静态规则,将所有请求转发到index.php处理:
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase /netcomplex-1/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
- 修改配置文件中的站点路径匹配本地环境
你当前配置里的站点URL默认用了https,且未带上子目录路径,会导致路由解析错误。将配置文件中对应部分修改为:
$conf['site_url'] = 'http://localhost/netcomplex-1'; $conf['site_url_static'] = 'http://localhost/netcomplex-1'; $conf['site_url_orig'] = 'http://localhost/netcomplex-1';
- 验证路由配置是否生效
尝试直接访问带index.php的子页地址http://localhost/netcomplex-1/index.php/kontakt,如果可以正常访问,即可确认是伪静态规则未生效导致的404问题。
额外说明
如果需要查询PHP版本,在站点根目录新建phpinfo.php文件,写入内容<?php phpinfo(); ?>,访问http://localhost/netcomplex-1/phpinfo.php即可查看完整的PHP版本、扩展启用情况等信息。
内容的提问来源于stack exchange,提问作者Michał Chęciński
相关产品推荐
相关产品推荐

