我正在为一个广播电台创建一个网站,并希望在该站点的一部分中播放广播中播放的艺术家和曲目。我目前正在将已编写的代码迁移到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的结构与标准目录/文件结构不同,我决定尝试两种方法:
针对这两个规则重写为/music/
,然后根据GET参数决定在“音乐”页面中包含artist.php
或track.php
。
重定向到/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中根本不可能吗?任何帮助将不胜感激。