【发布时间】:2012-11-15 15:53:57
【问题描述】:
我正在尝试编写除 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。如果有人有更多想法,请告诉我。
【问题讨论】:
标签: ajax wordpress mod-rewrite