我无法通过将自定义重写规则添加到functions.php
或者添加自定义永久结构。我的.htaccess
这很好用。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN IPHONE RULES
RewriteRule ^mobile/([^/]+)$ mobile/index.php?action=$1 [QSA,L]
# END IPHONE RULES
# BEGIN PDF RULES
RewriteRule ^certificates/30-Days-Certificate-([0-9]+)$ pdf/index.php?type=30day&period=$1 [QSA,L]
RewriteRule ^certificates/12-Month-Certificate$ pdf/index.php?type=12Month [QSA,L]
# END PDF RULES
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
但每隔一段时间,它就会刷新到默认值,我就会失去iPhone和pdf规则。手机的名字是这样的
/mobile/progress?userId=22&date=2011-02-21
哪里
progress
是操作,其他只是查询变量。在
.htaccess
工作正常,但我无法通过添加自定义规则使其正常工作。任何帮助都将不胜感激。
最合适的回答,由SO网友:Jan Fabry 整理而成
之间的部分# BEGIN WordPress
和# END WordPress
将始终在刷新永久链接时重写。您可以将额外的重写规则放在此段之前,也可以在WordPress中添加并注册为外部重写规则。如果您现在刷新规则(例如,通过访问Permalinks页面),您的额外规则将添加到.htaccess
文件
add_action( \'init\', \'wpse12708_init\' );
function wpse12708_init()
{
global $wp_rewrite;
$wp_rewrite->add_external_rule( \'mobile/([^/]+)$\', \'mobile/index.php?action=$1\' );
$wp_rewrite->add_external_rule( \'certificates/30-Days-Certificate-([0-9]+)$\', \'pdf/index.php?type=30day&period=$1\' );
$wp_rewrite->add_external_rule( \'certificates/12-Month-Certificate$\', \'pdf/index.php?type=12Month\' );
}