如何禁用特定Wordpress网址上的404标头

时间:2017-08-03 12:58:10

标签: php wordpress url-rewriting http-headers http-status-code-404

我使用此代码将特定网址重定向到我定制的Wordpress主题上的php文件:

add_action('wp', function() {
if ( trim(parse_url(add_query_arg(array()), PHP_URL_PATH), '/') === 'pagename' ) {
include(locate_template('mysciprt.php'));
exit();
}});

(我知道我可以使用重写规则,但出于某些原因我需要使用此代码。)

这项工作很棒。问题是该页面仍然具有404状态的http标头。这是一个问题,原因有几个(其中一些是:seo,后期脚本无法使用......)。

我的问题是:有什么办法可以解决吗?

我尝试了什么:

我尝试添加:

global $wp_query;
status_header(200);
$wp_query->is_page = true;
$wp_query->is_404  = false;

一开始没有帮助,然后我将action('wp'..更改为action('init'...并且它有效!但问题是我使用'wp'而非'init'的原因是因为我需要在此脚本上使用get_query_var()而我在使用'init'操作时无法使用select * from ( SELECT *, rn=ROW_NUMBER() over (partition by COLUMN1,COLUMN2,Column3 order by Column3 desc) FROM Table1 ) WHERE rn=1

2 个答案:

答案 0 :(得分:1)

最后变得更简单然后我想:

刚补充说:

global $wp_query;
status_header( 200 );
$wp_query->is_page = true;
$wp_query->is_404=false;

在script.php文件本身之前。

答案 1 :(得分:0)

只需发送包含200状态代码的标头即可。试试这个:

public class AddressBookViewModel : BindableBase { INavigationService _navigationService; public DelegateCommand EditAddressCommand { get; set; } public DelegateCommand DeleteAddressCommand { get; set; } public ObservableCollection<ListModel> ListItems {get;set;} = new ObservableCollection<ListModel>(); public DelegateCommand<ListModel> ListItemSelectCommand { get; set; } public MyZypListsViewModel(INavigationService navigationService) { _navigationService = navigationService; EditAddressCommand = new DelegateCommand(EditAddress); DeleteAddressCommand = new DelegateCommand(DeleteAddress); ListItemSelectCommand = new DelegateCommand<ListModel>(ListItemSelected); } private void EditAddress() { //Edit listitem } private void DeleteAddress() { //Delete listitem } }