Php 自定义WordPress重写返回404

Php 自定义WordPress重写返回404,php,wordpress,Php,Wordpress,我想添加几个自定义WordPress重写到包含一些特殊页面的目录中。我添加了一个名为custom的目录,其中包含所有自定义页面 我添加了重写规则,但由于某种原因,每当我尝试访问它们时,都会出现404错误。这是我的.htaccess的副本: Options +FollowSymLinks # BEGIN Custom <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /~meddept/ RewriteRule ^contac

我想添加几个自定义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

有人能解释为什么第一条规则(带有
L
标志)失败吗?我也尝试了很多,但得到了相同的结果…

我不是100%确定,但我认为你的问题是,你重写了基,然后访问其余的。这可能会奏效:

# BEGIN Custom
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /~meddept/
RewriteRule ^contact-us/? custom/contact.php [QSA,L]
</IfModule>
# END Custom
#开始定制
重新启动发动机
重写基地/~meddept/
重写规则^联系我们/?custom/contact.php[QSA,L]
#末日习俗

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

通过在处理代码之前设置循环,我可以绕过这个问题。基本上,我更新了
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();
?>


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

谢谢。我已经试过了,它产生了相同的结果。如果您删除自定义重写,只需将
RewriteRule^ contact-us//~meddept/custom/contact.php[L]
添加到现有的一个(index.php重定向的正下方),会得到相同的结果。两项都是404。是的。来自WordPress的自定义重写工作正常:您试过调试:它吗?作为stackfellow和namefellow(),我同意@benm,这是BS。您确定检查了此处条目的所有权:custom/*.*吗?@jacouh是的。用户和组的所有权都匹配WP根文件……我打算建议使用与@jacouh相同的方法。是custom RX和contact.php R。请尝试custom/contact.php:+1发送您的问题和答案以发布解决方案。我删除了
.htaccess,mod_rewrite
标记,因为这是不相关的。感谢发布您的解决方案。。尽管如此,我仍然认为这是一种愚蠢的做法;)
<?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();
?>