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