You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调整.htaccess后非首页出现URLNotFound问题求助(123reg主机)

解决伪静态URL 404问题的方案

你遇到的核心问题很明确:只配置了从真实PHP文件到美化URL的外部重定向,但没做反向的内部重写规则——服务器知道把/about.php跳转到/about,但当用户直接访问/about时,它完全不知道该去加载/about.php文件,自然返回404错误。

修正后的.htaccess代码

把你的.htaccess替换成下面的内容,我保留了你原有配置的同时,添加了关键的内部重写规则:

## EXPIRES CACHING ##
<IfModule mod_expires.c>
    # 这里可以按需添加缓存规则(不影响当前404问题),比如:
    # ExpiresActive On
    # ExpiresByType text/html "access plus 1 hour"
    # ExpiresByType text/css "access plus 1 month"
</IfModule>
## EXPIRES CACHING ##

<IfModule mod_deflate.c>
    # Compress HTML, CSS, JavaScript, Text, XML and fonts
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

Options +FollowSymLinks
RewriteEngine On

# 跳转到www子域名
RewriteCond %{HTTP_HOST} ^1ststopcleaning.co.uk$
RewriteRule ^(.*) http://www.1ststopcleaning.co.uk/$1 [QSA,L,R=301]

# 外部重定向:把带.php的URL跳转到无后缀的美化URL(可按需添加更多页面)
RewriteCond %{THE_REQUEST} \s/+(about|contact|services)\.php[\s?] [NC]
RewriteRule ^ %1? [R=302,L]

# 内部重写:核心修复!把无后缀的URL映射到对应的PHP文件
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9-]+)$ $1.php [L]

关键细节说明

  1. 扩展外部重定向规则:我把单一的about改成了about|contact|services这类多页面匹配(你可以根据实际存在的PHP文件添加更多,比如privacy),避免每个页面都写一条重复规则。
  2. 新增内部重写规则:这行规则会先检查请求的路径不是真实文件/目录,然后自动把/xxx映射到/xxx.php,让服务器能找到对应的文件。
  3. 重定向状态码:测试所有页面跳转和访问都正常后,建议把R=302改成R=301(永久重定向),对SEO更友好。

内容的提问来源于stack exchange,提问作者Ian Haney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:49:20