如何让WordPress以某种方式修改.htaccess文件?

时间:2012-11-27 作者:Volomike

我只学到了WordPress重写API的一点知识,足以为插件添加另一个重写规则。如果插件安装在根目录中,那么它就可以工作,但我发现如果在子目录中安装WordPress,那么我需要对进行以下更改。htaccess文件。如果可能的话,我想知道如何自动化这些更改。还有第二个问题。如果转到WordPress中的Permalinks设置,我的自定义更改将被覆盖(除了使用WP重写API的特殊规则)。所以,我需要一些使用WordPress重写API的东西,这样它们就不会被覆盖。

Original .htaccess file

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /mysubdir/
RewriteRule ^index\\.php$ - [L]
# my special WP Rewrite API line
RewriteRule ^special(.*)$ /mysubdir/wp-content/plugins/special/app/$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /mysubdir/index.php [L]
</IfModule>
# END WordPress

Changes I Made To Make Plugin Work in a Subdir

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

#RewriteBase /mysubdir/

RewriteRule ^index\\.php$ - [L]
# my special WP Rewrite API line
RewriteRule ^special(.*)$ /mysubdir/wp-content/plugins/special/app/$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#RewriteRule . /mysubdir/index.php [L]

RewriteRule . index.php [L]
</IfModule>
# END WordPress

2 个回复
SO网友:Sawant

如果不希望Wordpress覆盖中的更改。htaccess文件,然后确保在Wordpress注释块之外写入更改,即在此之前或之后:

# BEGIN WordPress
...
# END WordPress
将此区域视为Wordpress的领地。一旦Wordpress必须对其进行任何更改,该块中的任何内容都将被Wordpress覆盖。htaccess。

这是在Wordpress注释块之后可以执行的操作:

# BEGIN WordPress
...
# END WordPress

<IfModule mod_rewrite.c>
# Write your rewrite rules here.
</IfModule>

SO网友:Stephen Harris

您可以使用add_rewrite_rule() 将规则添加到.htaccess 文件如果将这些规则添加到init (或在刷新规则之前),则无论何时刷新规则(即保存永久链接设置时),都将保留这些规则。

注意,通常将重写传递给add_query_arg 其形式如下:

\'index.php?p=12&food=$matches[1]&variety=$matches[2]\'
WordPress在内部处理它,不将它们添加到.htaccess 文件但如果第一部分不是index.php? 然后将其视为外部重写规则并添加到.htaccess. See source.

结束