我在 GoDaddy 设置了一个共享主机帐户。我想在同一个帐户上托管多个网站,每个网站都有自己的域名。每个网站将位于其自己的子文件夹中,根目录中只有包含 URL 重写规则的 web.config。我基本上可以正常工作,但无法让 URL 按照我的喜好工作。
我拥有的一个网站是 Wordpress 安装的。这个网站的问题在于我无法使“漂亮”永久链接正常工作。我需要将 index.php 或它所在的子文件夹作为永久链接的一部分包含进去。
我还将托管 ASP.NET MVC 2 应用程序,但目前我想专注于 Wordpress 问题,因为这更为紧迫。我之所以提到这些其他网站,是因为我想更好地说明我的计划。
在根目录中,我有以下 web.config 文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<identity impersonate="false" />
</system.web>
<system.webServer>
<rewrite>
<rules>
<rule name="somewordpresssite.com" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(www.)?somewordpresssite.com" />
<add input="{PATH_INFO}" pattern="^/somewordpresssite/" negate="true" />
</conditions>
<action type="Rewrite" url="\somewordpresssite\{R:0}" />
</rule>
<rule name="someaspnetmvcsite.com" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(www.)?someaspnetmvcsite.com" />
<add input="{PATH_INFO}" pattern="^/someaspnetmvcsite/" negate="true" />
</conditions>
<action type="Rewrite" url="\someaspnetmvcsite\{R:0}" />
</rule>
</rules>
</rewrite>
<directoryBrowse enabled="false" />
</system.webServer>
</configuration>
然后,在我的 Wordpress 子文件夹中,我有 Wordpress 站点的 web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<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>
根目录中的 URL 重写规则似乎有效,至少足以让两个域指向两个不同的网站。我需要做些什么才能在我的 Worpress 网站中获得漂亮的永久链接吗?
答案1
事实证明,我需要更改 GoDaddy 上的域配置才能获得我想要的永久链接。我所描述的问题最终只对我的默认域造成问题,即使我已将其重定向到子文件夹。我需要做的是创建一个虚假域作为我的默认域,这样我就可以让真正的默认域指向子文件夹,而不是重定向到子文件夹。这看起来有点荒谬,但确实有效。
以下是 GoDaddy 帮助文章,其中解释了该过程:http://community.godaddy.com/help/article/4067。
按照文章中的步骤操作后(花了 24 个多小时才完成处理),我还可以删除最初放在根目录中的 web.config 文件。