Wordpress永久链接:删除标记库并添加.html扩展名

时间:2011-02-28 23:46:26

标签: php wordpress mod-rewrite permalinks

我的问题:

My permalink settings:

常规设置>自定义> /%postname%.html

可选设置>标签库>代码


我想这样:mysite.com/%tag-slug%.html

感谢


为@Dimitry编辑

正是我想要的方式

<?php
/*
Plugin Name: Custom tag URLs
Description: Appends .html to tag links
*/

// applied when calling get_tag_link()
add_filter('tag_link', 'my_tag_link', 10, 2);

/**
 * Returns a link to a tag. Instead of /tag/tag-name/ returns /tag-name.html
 */
function my_tag_link($tag_link, $tag_id) {
    $tag_base = get_option('tag_base');
    if ($tag_base) {
        // problem. returning: http://www.domain.com/post-tag/tag-name
        //$tag_link = preg_replace('@^' . preg_quote($tag_base, '@') . '@', '', $tag_link);

        // I added it. Result: http://www.domain.com/tag-name
        $tag_link = str_replace("$tag_base/", "", preg_replace('@^' . preg_quote($tag_base, '@') . '@', '', $tag_link)); 
        //echo "$tag_link<br>";
    }
    // problem. returning: http://www.domain.com/http://www.domain.com/tag-name.html
    //return '/' . trim($tag_link, '/') . '.html';

    // I added it. Result: http://www.domain.com/tag-name.html , 
    return trim($tag_link, '/') . '.html';

}
?>

我做了永久链接设置

常规设置&gt;自定义&gt; /post-%postname%.html 可选设置&gt;标签库&gt;标签交

htaccess的:

# BEGIN 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>

# END WordPress

# Rewrites /tag-name.html as /post-tag/tag-name
# Assuming that your tag_base option is blank or set to 'post-tag'
RewriteCond %{REQUEST_URI} !^/post-.*
RewriteRule ^/?([^/]*)\.html$ /post-tag/$1

单页:http://www.domain.com/post-hello-world.html&gt;&gt;工作中 标记页:http://www.domain.com/tag-name.html&gt;&gt;找不到404               http://www.domain.com/post-tag/tag-name&gt;&gt;工作

问题:

无法找到代码页

对不起。我是初学者。谢谢Dimitry

3 个答案:

答案 0 :(得分:1)

我不确定您可以通过管理界面执行任何操作,但您可以添加一些自己的代码作为插件(在wp-content / plugins / tag_links.php中):

<?php
/*
Plugin Name: Custom tag URLs
Description: Appends .html to tag links
*/

// applied when calling get_tag_link()
add_filter('tag_link', 'my_tag_link', 10, 2);

/**
 * Returns a link to a tag. Instead of /tag/tag-name/ returns /tag-name.html
 */
function my_tag_link($tag_link, $tag_id) {
    $tag_base = get_option('tag_base');
    if ($tag_base) {
        $tag_link = preg_replace('@^' . preg_quote($tag_base, '@') . '@', '', $tag_link); 
    }
    return '/' . trim($tag_link, '/') . '.html';
}

在.htaccess文件中,高于其他重写规则,执行以下操作:

# Rewrites /tag-name.html as /post-tag/tag-name
# Assuming that your tag_base option is blank or set to 'post-tag'
RewriteCond %{REQUEST_URI} !^/post-.*
RewriteRule ^/?([^/]*)\.html$ /post-tag/$1

您的帖子网址结构将是post-%postname%.html。

所有这些都表明您的代码和帖子必须在网址结构中至少有一个差异化功能。在这种情况下,它是帖子URL的'post-'前缀。

您正在构建Wiki吗?

答案 1 :(得分:0)

如果我错了,请纠正我,但我认为因内容重复而无法完成。

答案 2 :(得分:0)

嗨,试试这个http://wordpress.org/plugins/import-html-pages/

将格式良好的静态HTML文件导入WordPress。需要PHP 5.

此插件会将文件目录导入为页面或帖子。您可以指定包含要导入的内容的HTML标记(例如,或)或Dreamweaver模板区域(例如&#39;主要内容&#39;)。

如果导入页面,将保留目录层次结构。包含指定文件类型的目录将作为空父页面导入(或者,如果存在索引文件,则其内容将用于父页面)。将忽略不包含指定文件类型的目录。

导入文件时,将显示生成的ID,永久链接和标题。完成后,导入器将提供可在.htaccess文件中使用的Apache重定向列表,以便将访问者从旧文件位置无缝转移到新的WordPress永久链接。从2.0开始,如果您在导入文件后更改固定链接结构,则可以重新生成重定向 - 文件的旧URL将作为自定义字段存储在导入的帖子中。