自定义WordPress重写返回404

时间:2013-11-11 11:12:19

标签: php wordpress

我想将几个自定义WordPress重写添加到包含一些特殊页面的目录中。我添加了一个名为custom的目录,其中包含所有自定义页面。

我添加了重写规则,但出于某种原因,每当我尝试访问它们时,都会出现404错误。以下是我.htaccess的副本:

Options +FollowSymLinks

# BEGIN Custom
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /~meddept/
RewriteRule ^contact-us/? /~meddept/custom/contact.php [QSA,L]
</IfModule>
# END Custom

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /~meddept/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /~meddept/index.php [L]
</IfModule>

# END WordPress

尝试访问contact-us/时出现问题。访问/custom/contact.php也会返回相同的404错误,即使该文件肯定存在...

RewriteRule: http://82.147.22.3/~meddept/contact-us/
Direct file: http://82.147.22.3/~meddept/custom/contact.php

任何人都可以解释为什么第一条规则(L标志)失败了吗?我也试过了很多WordPress functions,但收到了同样的结果......

2 个答案:

答案 0 :(得分:1)

404标题的问题是由WordPress引起的。由于我使用WordPress来处理页眉和页脚的输出,并且没有定义WordPress页面,因此WP返回(错误地)404。

我能够通过在处理我的代码之前设置The Loop 来避免这种情况。基本上,我更新了contact.php,如下所示:

<?php

require('../wp-blog-header.php');

// Fix WordPress false 404s:
$wp->init();
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
$wp->send_headers();

get_header();

echo 'this is my content';

get_footer();
?>

现在一切正常(包括自定义路线)。

答案 1 :(得分:0)

我不是百分百肯定,但我认为你的问题是,你重写了基础,然后访问其余部分。这可能有效:

# BEGIN Custom
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /~meddept/
RewriteRule ^contact-us/? custom/contact.php [QSA,L]
</IfModule>
# END Custom