如何在WordPress子域名下创建自定义页面路由
WordPress子域名自定义路由配置方案
针对子域名audio.mywebsite.com下任意后缀URL重定向到指定文件的需求,可按以下步骤修改代码:
1. 替换重写规则函数
替换原有的custom_rewrite_rule函数,添加子域名判断逻辑,同时保留主域名的原有规则:
add_action('init', 'custom_subdomain_rewrite_rule', 10, 0); function custom_subdomain_rewrite_rule() { $host = $_SERVER['HTTP_HOST']; // 匹配audio子域名 if (strpos($host, 'audio.mywebsite.com') !== false) { // 捕获子域名下任意非空路径,转发到目标文件 add_rewrite_rule('^([^/]*)/?$', 'wp-content/sounds/sound.php?sound_slug=$1', 'top'); } else { // 保留主域名原有规则 add_rewrite_rule('^audio/([^/]*)/?', 'wp-content/sounds/sound.php?sound_slug=$1', 'top'); } }
2. 注册查询变量(可选)
如果需要在sound.php中获取URL中的后缀值(如Everything、0123456789),需添加查询变量注册:
add_filter('query_vars', 'custom_add_sound_query_var'); function custom_add_sound_query_var($vars) { $vars[] = 'sound_slug'; return $vars; }
之后在sound.php中可通过$_GET['sound_slug']获取该值。
3. 刷新重写规则缓存
修改代码后,进入WordPress后台「设置」→「固定链接」,点击「保存更改」(无需修改任何设置),即可刷新WordPress的重写规则缓存,让新规则生效。
4. 服务器配置检查
确保服务器支持子域名重写:
- Apache环境:确认
.htaccess文件包含WordPress默认重写规则,且服务器配置中AllowOverride设置为All - Nginx环境:在
audio.mywebsite.com的server块中添加以下配置:server { listen 80; server_name audio.mywebsite.com; root /path/to/your/wordpress; index index.php index.html; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据你的PHP版本调整路径 } }
内容的提问来源于stack exchange,提问作者yaradan
相关产品推荐
相关产品推荐

