在哪里使用ADD_REWRITE_RULE?

时间:2011-10-06 作者:Random

我需要向我的站点添加重写规则。我试过了。htaccess运气不佳,无法解析,所以我几乎放弃了。我找到了关于add\\u rewrite\\u规则的文档,但不知道应该在哪里使用它。我不是在写插件。我需要加入一条简单的规则。

我去参加了各种活动。当前主题文件夹中的php文件。这是我用的吗?我插入以下内容:

add_action( \'init\', \'add_news_rule3\' );
function add_news_rule3() 
{ add_rewrite_rule( \'^/content/([^/]*)/([^/]*)\\.htm$\', \'/content/$matches[1] [NC,R=301,L]\', \'top\' ); } 
根据我在其他地方看到的帖子,我也尝试过:

add_action( \'generate_rewrite_rules\', \'add_news_rule\' );
function add_news_rule($wp_rewrite)
{ $new_rules = array(\'^/content/([^/]*)/([^/]*)\\.htm$\' => \'/content/$matches[1] [NC,R=301,L]\'); 
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules; } 

add_filter(\'rewrite_rules_array\',\'add_news_rule2\'); 
function add_news_rule2($rules)
{ $new_rules = array(\'^/content/([^/]*)/([^/]*)\\.htm$\' => \'/content/$matches[1] [NC,R=301,L]\'); 
return $new_rules + $rules; } 

2 个回复
最合适的回答,由SO网友:Milo 整理而成

add_rewrite_rule 用于将URL结构转换为查询变量,并通过index.php, 您不能像在htaccess重写中那样指向其他URL并使用标志。

对于您想要实现的目标,通过htaccess实现是最简单的方法。如果只删除前导斜杠,则规则应该有效:

RewriteRule ^content/([^/]+)/([^/]+)\\.htm$ /content/$1/ [NC,R=301,L]
如果您使用的是相当长的永久链接,则需要在任何WordPress重写之前执行此操作,否则将永远无法达到此规则。

SO网友:w3uiguru

如果可能的话,请出示您的。htaccess代码,以便我们可以看到您正面临的问题。

但首先要检查web服务器中是否启用了mod\\u rewite模块。要确定它是否已启用,只需在Web服务器名称phpinfo中放入一个文件。php

将此代码放入phpinfo。php文件

<?php phpinfo(); ?>
执行此文件后,您将在标题下看到apache2handler 在表中,请参见Loaded Modules 并查找mod\\u重写模块是否存在。如果不存在,请联系您的托管提供商并启用它。

如果已启用,请检查您的。htaccess文件再次可能是您缺少了一些内容。

结束

相关推荐