Emlog在Godaddy Windows 主机中的伪静态设置和中文tag路径问题

在使用Godaddy的免费Win 主机时,其使用的windows server 2008并自带IIS7 ,当安装emlog4.2.1博客后,可按如下步骤为emlog4.2.1博客设置伪静态:

1、在网站根目录下创建一个web.config文件并把下列伪静态规则放入其中就可以了。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="emlog 4.2.1 for IIS7.5" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

2、然后就可以登录到emlog4.2.1博客管理后台 >设置 > 日志链接,然后选择“伪静态格式”并保存,如:分类形式

此方法适用于4.0以后版本,如果有疑问,可以留言大家一起看下。

 

----------------------------------------------------------------------------------------------------------------------------

第二个问题,就是Emlog的tag用伪静态时如https://dabao.me/tag/****这种格式的,如果****为中文的话就会出现404错误页面。

在网上搜到如下:

godaddy win主机下wordpress tag 中文标签这个问题重建站之初困扰至今 今个终于解决了 网上也有几个方法(不推荐) 就是不使用中文TAG 全部使用英文TAG 或者改程序文件 都不好使 伊惜缘的目的是要使用中文标签 经过一段时间揣摩和调试 终于发现了问题所在 godaddy的win主机比较奇怪 既有IIS服务器又有apache服务器 所以在获取$_SERVER['REQUEST_URI']会出错 显示tag/?? 这样的情况 解决很简单 不用转码 不用转插件 下面跟我手把手操作

首先 先打开wp-includes/class-wp.php 如果没发现 可能你的是2.x版本的 那个版本是class.php 伊惜缘目前所使用的是最新版本3.3.1 所以这里以以3.x版本为准

其次 找到第147行 当然 你要是怕麻烦 也可以搜索下面这行

$req_uri = $_SERVER['REQUEST_URI'];

然后把这行改成

$req_uri = $_SERVER['UNENCODED_URL'];

保存退出文件即可 大功告成 收工 自己点击TAG试试吧

上面是说的在wordpress下问题的解决办法,那在emlog下怎么解决呢?

其实是一样的,只不过改的文件不同而已,在emlog下要改的文件为include\lib\dispatcher.php这个文件

找到这个文件的这个方法

public static function setPath(){
        $path = '';
        if (isset($_SERVER['REQUEST_URI'])){
            $path = $_SERVER['REQUEST_URI'];
        } else {
            if (isset($_SERVER['argv'])) {
                $path = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
            } else {
                $path = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
            }
        }

把第三行和第四行的

if (isset($_SERVER['REQUEST_URI'])){
            $path = $_SERVER['REQUEST_URI'];

改成

if (isset($_SERVER['UNENCODED_URL'])){
            $path = $_SERVER['UNENCODED_URL'];

然后覆盖,现在回到首页试试吧

上一篇‡: [转]C# Winform获取bin目录的路径

下一篇‡: 动态调用WebService方法

最近回复