Назад | Перейти на главную страницу

Несколько веб-сайтов Wordpress и ASP.NET MVC 2 на общем хостинге с IIS7

У меня есть общая учетная запись хоста, настроенная в GoDaddy. Я хочу разместить несколько веб-сайтов, каждый со своим собственным доменным именем в одной учетной записи. Каждый сайт будет находиться в своей собственной подпапке, и только файл web.config содержит правила перезаписи URL в корне. У меня он в основном работает, но я не могу заставить 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 у меня есть файл web.config для сайта Wordpress:

<?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?

Как оказалось, мне нужно было изменить конфигурацию моего домена на GoDaddy, чтобы получить постоянные ссылки, которые я искал. Проблема, которую я описал, оказалась проблемой только для моего домена по умолчанию, хотя у меня было перенаправление во вложенную папку. Что мне нужно было сделать, так это создать фиктивный домен в качестве моего домена по умолчанию, чтобы мой реальный домен по умолчанию указывал на подпапку, а не перенаправлялся в подпапку. Это кажется немного смешным, но это сработало.

Вот статья справки GoDaddy, в которой объясняется этот процесс: http://community.godaddy.com/help/article/4067.

Выполнив действия, описанные в статье (обработка которых заняла чуть более 24 часов), я также смог удалить файл web.config, который я изначально поместил в корень.