难以为Wordpress创建自定义RewriteRules

时间:2018-08-22 16:11:10

标签: php wordpress apache .htaccess mod-rewrite

我正在为一个广播电台创建一个网站,并希望在该站点的一部分中播放广播中播放的艺术家和曲目。我目前正在将已编写的代码迁移到Wordpress模板中,并且在复制所创建的RewriteRules时遇到困难。

我希望用户能够输入:
/music/<artist name here>/
/music/<artist name here>/<track name here>/

并将其重写为:
/music/artist.php?artist=<artist name here>
/music/track.php?artist=<artist name here>&track=<track name here>

例如:
/music/Red+Hot+Chili+Peppers/
/music/Red+Hot+Chili+Peppers/Californication/

我可以使用以下.htaccess文件来实现此目的:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^music/([^/]*)/?$ /music/artist.php?artist=$1
RewriteRule ^music/([^/]*)/([^/]{1,})/?$ /music/track.php?artist=$1&track=$2

当我切换到Wordpress时,我首先尝试复制艺术家页面,但一直无法这样做。

由于Wordpress的结构与标准目录/文件结构不同,我决定尝试两种方法:

  1. 针对这两个规则重写为/music/,然后根据GET参数决定在“音乐”页面中包含artist.phptrack.php

  2. 重定向到/artist//track/,而有两个不同的页面。

我尝试了两种方法,但都没有用。

对于方法1,这是我添加到functions.php中的代码(仅尝试以艺术家重写开始):

function custom_rewrite() {
    add_rewrite_rule('music/([^/?]*)/?$', 'music/?artist=$1');
}
add_action('init', 'custom_rewrite');

保存永久链接设置(使用“日期和名称”)后,创建了以下.htaccess文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^music/([^/?]*)/?$ /music/?artist=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

导航到/music/<artist name here>/时,根据不同的永久链接设置,我将看到500错误或显示在主页上。

对于方法2,这是我添加到functions.php的代码:

function custom_rewrite() {
    add_rewrite_rule('music/([^/]*)/?$', 'artist/?artist=$1');
}
add_action('init', 'custom_rewrite');

保存永久链接设置(使用“日期和名称”)后,创建了以下.htaccess文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^music/([^/]*)/?$ /artist/?artist=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

同样,根据不同的永久链接设置,导航到/music/<artist name here>/后,我将得到500错误或将显示主页。

.htaccess文件中是否缺少某些内容?我是否与Wordpress的永久链接设置发生冲突?这只是在Wordpress中根本不可能吗?任何帮助将不胜感激。

0 个答案:

没有答案