如何使用 WordPress 配置 Windows Azure 以进行 URL 重写?

Posted

技术标签:

【中文标题】如何使用 WordPress 配置 Windows Azure 以进行 URL 重写?【英文标题】:How Do You Configure Windows Azure For Url Rewrite Using WordPress? 【发布时间】:2013-07-26 03:42:45 【问题描述】:

我刚刚使用 Windows Azure 和他们的 WordPress 博客模板创建了一个网站。我能够更新 CNAME 和别名记录,以正确地将我的域转发到他们的网站。当我转到:www.myblog.net 时,我被重定向到:myblog.azurewebsites.net 并且浏览器显示 www.myblog.net,这就是我想要的。

这一切都很好。该网站加载良好,一切都很好。

但是,当我尝试访问带有永久链接的页面时,问题就出现了。通过 WordPress 配置,我将永久链接更新为以下格式:http://www.myblog.net/blog/The-Post-Name-Is-Here。问题在于,当我尝试访问该 URL 时,出现以下错误:

您要查找的资源已被删除、名称已更改或暂时不可用。

如果我转到同一主题的短链接(例如http://www.myblog.net/?p=241),则会找到该页面并且一切正常。

我对此进行了很多研究,发现有一个针对 apache 的 url 重写,但这显然对我不起作用。我还发现 IIS 有一个 url 重写,我在本地玩过这个。您可以对其进行配置以正确管理 url 重写。但是,Windows Azure 网站配置门户中没有这样的 IIS 面板。

我还阅读了很多关于编辑 web.config 和 htaccess 的内容,但是这些文件都不在我在 azure 上的网站的 wwwroot 目录(或任何子目录)中。

那么,有谁知道如何配置 azure 网站以正确管理永久链接?

提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

Windows Azure 网站上的 WordPress 在 Microsoft Internet Information Services (IIS) 下运行,而不是在 Apache 下运行。 IIS 也支持 URL 重写,但配置是在 Web.config 文件中完成的,而不是在 .htaccess 文件中。

首先,在WordPress设置中,将永久链接更改为不带“index.php”的自定义结构,如:

/%year%/%monthnum%/%day%/%postname%/

还要确保在 WordPress 设置的常规设置部分中,WordPress 地址 (URL) 和站点地址 (URL) 正确。

接下来,使用 FTP、WebMatrix 或其他工具,在您的 WordPress 站点的根目录中创建一个 Web.config 文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Main Rule" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="REQUEST_FILENAME" matchType="IsFile" negate="true" />
                        <add input="REQUEST_FILENAME" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

有关分步教程,请参阅Pretty WordPress Permalinks on Azure。如需更多信息,请参阅Moving a WordPress Blog to Windows Azure – Part 4: Pretty Permalinks and URL Rewrite rules。

【讨论】:

使用 web.config 是要走的路。这是我正在寻找的确切答案!我之前曾尝试上传 web.config,但我没有正确设置我的 WordPress 地址 (URL) 和站点地址 (URL)。当我需要两个字段都指向 mysite.net 时,我仍然指向我的实际服务器 URL。感谢您的帮助! 这个答案很棒。如果有人找不到编辑 web.config 的方法。您可以使用以下your-site.azurewebsites.net/dev/wwwroot/web.config 编辑 web.config【参考方案2】:

如果您的 wordpress 博客配置为 www.myblog.net,那么在您的永久链接中您不能拥有 /blog,除非您在 wordpress 设置中更改了它。 我认为你的永久链接应该看起来像 http://www.myblog.net/index.php/The-Post-Name-Is-Here

转到设置 -> 永久链接,然后从那里选择一个选项。或者,如果您想要自定义 url,然后输入 - /index.php/%postname%/ 并保存。

【讨论】:

我按照您的建议将 /blog/ 替换为 /index.php/,并且我所有的旧帖子和新帖子都开始完美运行,因此非常感谢您的回答!不过,有一个问题 - 你(或任何人)知道如何美化永久链接,使其可以只是 www.myblog.net/blog/this-is-a-title 吗?我已经阅读了有关 WordPress 的不同插件来帮助解决这个问题,但它们都适用于 Apache。 查看 Fernando 为 Pretty Permalinks 分享的链接

以上是关于如何使用 WordPress 配置 Windows Azure 以进行 URL 重写?的主要内容,如果未能解决你的问题,请参考以下文章

如何配置XAMPP并搭建自己的本地wordpress博客

WordPress 的环境配置

Windows下搭建Wordpress博客网站

Windows搭建wordpress环境

带有xampp的Windows上的Wordpress如何更改默认URL

如何使用 Next.js 将 Wordpress 配置为无头 CMS