IIS上的home_url缺少固定链接index.php

时间:2013-06-10 作者:icc97

我正在使用IIS,没有任何包含索引的URL重写。最后是php。自定义permalink结构为:/index.php/%year%/%monthnum%/%postname%/

问题是home\\u url函数不包含索引。php,所以如果我想引用自定义页面<?php echo home_url() . \'/my-page/\'; ?> 退货http://domain.com/my-page/ 但我需要的是http://domain.com/index.php/my-page/ .

是否有包含索引的WordPress函数。php还是我必须输入自定义的代码?

N、 B.我试过了Googling, 但大多数链接都指向重写URLnot 我想要什么。

2 个回复
SO网友:Pat J

您可以筛选home_url:

add_filter( \'home_url\', \'wpse102523_home_url\' );
function wpse102523_home_url( $url ) {
    return $url . \'index.php/\';
}
参考号:Adam Brown\'s Filter Database

SO网友:icc97

尝试add\\u filter选项实际上对我不起作用。由于home\\u url函数影响了具有索引的永久链接,代码变得非常难看。php和我所有让它工作的尝试都失败了。

我想出的最佳解决方案是修改网站地址(akahome_url) 在常规设置中http://domain.com/index.php. 然后将永久线更改为正常,例如。/%year%/%monthnum%/%postname%/. 这样,大多数链接都能正常工作。唯一的问题链接是http://domain.com/index.php/ (请注意结尾“/”)。对我来说,这并不重要,因为它是我的本地主机站点,但如果不这样的话,只要解决这个问题,站点就会正常工作。

以防万一有人想继续下去add_filter 路,我的罪恶是我的尝试:

<?php
if ($is_iis7 && !iis7_supports_permalinks()) {
    if (!is_admin()) {
        add_filter( \'home_url\', \'icc_iispb_url\' );
    }
}

function icc_iispb_url($url) {
    if (strpos($url, \'index.php\') === false) {
        $url = str_replace(get_option(\'home\'), get_option(\'home\').\'/index.php\', $url);
    }
    return $url;
}   
?>

结束

相关推荐

old permalinks not found

通过Google网站管理员工具查看,我有很多404个永久链接结构为/%年%/%月%/%日%/%postname%的帖子/此后,我将永久链接更改为/%类别%/%postname%。html我原以为Wordpress可以将旧的帖子URL重定向到新的帖子URL,但旧的基于日期的URL正在生成404。我的htaccess文件可写,设置为644。为什么会发生这种情况?谢谢