目录的AJAX重写规则

时间:2012-11-15 15:53:57

标签: ajax wordpress mod-rewrite

除了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/sub1http://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-&gt; non_wp_rules。如果有人有更多的想法,请告诉我。

1 个答案:

答案 0 :(得分:0)

试试这个,你似乎有不好的路线:

<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteBase /
# RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f #Means DONT redirect if file exists.
RewriteCond %{REQUEST_FILENAME} !-d #Means DONT redirect if directory exists.
RewriteCond %{REQUEST_URI} !^/sub1/
RewriteCond %{REQUEST_URI} !^/sub2/
# RewriteRule ^/(sub1|sub2)/(.*)$ http://www.example.com/$1/ [L]
RewriteRule . /index.php [L]
</IfModule>

发生的是,每次添加“RewriteRule”时,所有“RewriteCond”都应用于该规则,然后以空白石板开头:

RewriteCond A
RewriteCond B
RewriteCond C
RewriteRule Whatever [L] #This applies A, B, and C
RewriteRule Another [L] #This applies no rules

也许这会有所帮助。

此外,您可以尝试在“RewriteEngine On”之后添加“RewriteRule ^ /(sub1 | sub2)/(。*)$ http://www.example.com/ $ 1 / [L]”,如果这不起作用...... < / p>