IIS 8 URL переписать, чтобы игнорировать каталог - PullRequest
2 голосов
/ 19 апреля 2019

Я пытаюсь настроить веб-сайт IIS 8. Я хочу игнорировать последний каталог введенного в URL, но не удалять его, а просто игнорировать его. Имя каталога может быть любым

Объяснение

URL веб-сайта: https://mywebsite.com

На сайте есть каталог с именем /stores, который содержит полный веб-сайт.
Веб-сайт будет использовать несуществующий каталог /somename в URL-адресе, чтобы правильно отобразить веб-сайт.

Если я введу https://mywebsite.com/stores/somestore, очевидно, я получу 404 Not Found, так как каталог somestore не существует внутри stores

Как я могу написать правило IIS, чтобы игнорировать эту последнюю часть каталога URL, которая не существует, но также сохранить ее в URL, чтобы она могла использоваться PHP для правильной визуализации страницы.

Вроде как Facebook, где профиль доступен, добавив /profilename к URL.

ПРИМЕЧАНИЕ: Я не могу использовать параметры URL для этого из-за некоторых технических конфликтов.

Не стесняйтесь обновлять заголовок этого вопроса, я не уверен, что он полностью правильный.

1 Ответ

1 голос
/ 23 апреля 2019

В основном, если вы посмотрите на адресную строку в стеке потока прямо сейчас, после папки / вопросов есть предположительно каталог с именем ThisQuestionsId (55762513). Но на самом сервере есть папка с таким именем? Я предполагаю, что нет. Я хочу знать, как это достигается.

Если вы хотите получить формат URL-адреса, такой как переполнение стека, с помощью переопределения URL-адреса IIS.

Я предлагаю вам обратиться к нижеследующему правилу.

Перезапишет https://mywebsite.com/question/55553 в https://mywebsite.com/question.php?id=55553

Это означает, что вы можете написать логику на странице question.php, чтобы выбрать данные и отобразить их в соответствии со значением идентификатора строки запроса.

  <rewrite>
    <rules>
                <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
                    <match url="^question/([^/]+)/?$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="question.php?id={R:1}" />
                </rule>

    </rules>
  </rewrite>
...