是否覆盖.htaccess中的重写规则?

时间:2011-03-22 作者:chifliiiii

我无法通过将自定义重写规则添加到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 工作正常,但我无法通过添加自定义规则使其正常工作。任何帮助都将不胜感激。

1 个回复
最合适的回答,由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\' );
}

结束

相关推荐

使用WP而不是.htAccess重定向页面/帖子

我在htaccess中运行了一个站点,其中有100多个特定重定向,用于遗留html文件,这些文件随后被引入WP。对于日期范围内的页面,也有规则可以重定向到主页,以及各种各样的其他问题。鉴于WP在内部处理重定向和永久链接,并且不使用插件,那么以编程方式重定向这些链接并保留我的链接的最佳方式是什么。htaccess文件清理?