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

如何配置.htaccess实现SEO友好URL重写?遇404错误求助

配置example.com/artwork/paintingURL格式URL重写后出现404错误

想要将URL重写为example.com/artwork/paintingURL的SEO友好格式,但配置后访问重定向后的URL出现404页面未找到错误,以下是当前配置及解决方案:

当前.htaccess配置

RewriteEngine on
RewriteRule ^pages/([\w-]+)/artwork/?$ painting.php?painting=$1 [QSA,NC,L]
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [NC,L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L] 

当前页面链接方式

页面通过以下链接访问:

<a href = "painting?painting=<?=$paintingURL?>">

painting.php代码

<?php    
 if(isset($_GET['painting'])) {
 include('include/conn.php');    
 $paintingURL = $_GET['painting'];    
 $sql = "SELECT * FROM `paintings` WHERE `painting_URL` = '$paintingURL'";
 $result = $conn->query($sql);
    
 global $paintingName;
 global $paintingDesc;
 global $paintingImg;
 global $pageTitle;
    
  if(mysqli_num_rows($result) > 0){
   while ($row = mysqli_fetch_assoc($result)){
     
     $paintingName = $row['painting_Name'];
     $pageTitle = "Site Name - ".$paintingName;
     $paintingDesc = $row['size_description'];
     $paintingImg = $row['image_ID'];
  }    
} ?>   

解决方案

1. 修正.htaccess重写规则

当前规则匹配的是pages/xxx/artwork格式,与目标artwork/xxx不符,替换为以下规则(调整顺序避免冲突):

RewriteEngine on

# 将旧动态URL重定向到新SEO URL(301永久重定向,利于SEO)
RewriteCond %{THE_REQUEST} /painting\.php\?painting=([^\s&]+) [NC]
RewriteRule ^ /artwork/%1? [R=301,L]

# 将新SEO URL内部重写为实际PHP文件
RewriteRule ^artwork/([\w-]+)/?$ painting.php?painting=$1 [QSA,NC,L]

# 隐藏其他PHP/HTML文件后缀
RewriteCond %{THE_REQUEST} /([^.]+)\.(php|html) [NC]
RewriteRule ^ /%1 [NC,L,R=301]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [NC,L]

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]

2. 更新页面链接格式

将生成的链接改为新的SEO友好格式:

<a href="artwork/<?=$paintingURL?>">

3. 关键检查项

  • 确认服务器已启用mod_rewrite模块
  • .htaccess文件需放置在网站根目录
  • 确保paintingURL变量仅包含字母、数字、下划线或连字符(匹配正则[\w-]+),若有特殊字符需调整RewriteRule的正则表达式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:25:43