除了 wordpress 之外,我还尝试编写重写规则:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
我不希望所有内容都重定向到主页。我有多个子目录也需要重定向: http://www.example.com/sub1和http://www.example.com/sub2。我这样做是为了让我的内容可以通过 Ajax 加载。
我以为这只是
RewriteRule ^/(sub1|sub2)/(.*)$ http://www.example.com/$1/ [L]
我把它放在这里的块中:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(sub1|sub2)/(.*)$ http://www.example.com/$1/ [L]
RewriteRule . /index.php [L]
</IfModule>
也许使用 wordpress 你必须使用 wp_rewrite_rule?我想我可以弄乱 .htaccess 文件,让我的规则起作用,然后将它移到函数中。
任何帮助,将不胜感激。
谢谢。
更新:我还尝试将 .htacces 文件设置回 wordpress 默认值...并将此代码添加到我的子主题的 functions.php 文件中:
function AJAX_rewrite_rule() {
add_rewrite_rule(
'^/(sub1|sub2)/(.*)$',
'http://www.example.com/$1',
'top' );
};
add_action( 'init', 'AJAX_rewrite_rule' );
似乎减慢了所有内容的加载速度,但所有未找到的文件仍被重定向到主页,而不是子目录。
更新#2 我认为我走错了方向,因为 add_rewrite_rule 只是向 wordpress 已经到位的结构添加规则。这一切都是通过解释 URL 并将它们更改为由索引运行的数据库查询的变量来实现的。
我很确定我需要使用 $wp_rewrite->non_wp_rules。如果有人有更多想法,请告诉我。