.htaccess配置:将404职位子页面重定向至2023职位列表页
问题解决:404职位详情页重定向至列表页
背景说明
现有页面情况:
foo.com/jobs/2023/- 职位列表基准页foo.com/jobs/2023/job-1- 有效职位详情页foo.com/jobs/2023/job-2- 有效职位详情页foo.com/jobs/2023/job-3- 返回404错误页面
需求:将返回404的job-3链接重定向至foo.com/jobs/2023/,同时确保前两个有效详情页可正常访问。
此前错误尝试
曾使用以下规则,触发500服务器错误:
RewriteRule ^/jobs/2023/$ /jobs/2023/ [L,R=301]
当前.htaccess内容
RewriteEngine On ## Redirect last years jobs to this years. RewriteRule ^/jobs/2022(/?.*)$ /jobs/2023$1 [R=301,L]
解决方案
添加规则判断请求的职位详情页是否存在,不存在则重定向至列表页。修改后的完整.htaccess配置如下:
RewriteEngine On ## Redirect last years jobs to this years. RewriteRule ^/jobs/2022(/?.*)$ /jobs/2023$1 [R=301,L] ## Redirect non-existent job detail pages to the jobs list RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/jobs/2023/([^/]+)$ /jobs/2023/ [R=301,L]
规则说明
RewriteCond %{REQUEST_FILENAME} !-f:检查请求路径不是已存在的文件RewriteCond %{REQUEST_FILENAME} !-d:检查请求路径不是已存在的目录RewriteRule ^/jobs/2023/([^/]+)$ /jobs/2023/ [R=301,L]:匹配/jobs/2023/下的子路径(即职位详情页格式),若满足上述两个不存在条件,则永久重定向至列表页;L标记确保后续规则不再执行,避免冲突。
此前的错误规则因将列表页重定向至自身,导致循环请求,引发500错误。新规则仅针对列表页下的子路径生效,不会干扰有效页面或列表页本身。
内容的提问来源于stack exchange,提问作者Chimpster
相关产品推荐
相关产品推荐

