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

WordPress迁移至AWS Elastic Beanstalk后文章名固定链接404普通链接正常

问题原因
  • AWS Elastic Beanstalk的Apache默认配置未开启AllowOverride All,导致blog目录下的.htaccess重写规则无法生效
  • Laravel根目录的默认重写规则会拦截所有请求交给Laravel路由处理,没有将blog目录的请求转发给WordPress处理
修复步骤

步骤1:配置Elastic Beanstalk允许.htaccess规则覆盖

在项目根目录新建.ebextensions文件夹,在文件夹内创建apache.config配置文件,写入以下内容:

files:
  "/etc/httpd/conf.d/enable_htaccess.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      <Directory "/var/www/html">
        AllowOverride All
      </Directory>

该配置会在环境部署时自动修改Apache的全局配置,允许根目录及子目录的.htaccess文件生效,部署完成后重启Elastic Beanstalk实例即可。

步骤2:修改Laravel根目录的.htaccess规则

在Laravel默认的.htaccess文件最开头新增blog目录排除规则,避免blog路径的请求被Laravel路由拦截:

# 放行blog目录请求交给WordPress处理
RewriteRule ^blog(/.*)?$ - [L]

修改后的根目录.htaccess结构参考:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # 新增的WordPress目录排除规则
    RewriteRule ^blog(/.*)?$ - [L]

    # Laravel默认重写规则
    RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/.*
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

步骤3:确认blog目录下的WordPress .htaccess配置正确

blog文件夹内的.htaccess需要写入WordPress子目录默认重写规则:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress

步骤4:刷新WordPress固定链接缓存

登录WordPress后台,进入「设置」-「固定链接」页面,直接点击「保存设置」即可,无需修改现有配置,WordPress会自动刷新重写规则缓存,生效后自定义固定链接即可正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:24:03