У меня есть php веб-сайт, созданный под IIS 7 с использованием cakePHP. Это продолжалось довольно долго, используя не очень красивые URL-адреса формы /index.php/[controller]/[action]/[etc]
. Достаточно долго для людей, чтобы закладки и Google индексировали все. Теперь я исправил web.config
так, чтобы используемые URL-адреса были от /[controller]/[action]/[etc]
, минуя index.php
в URL-адресе (внутренне все идет на одно и то же место).IIS 7.5 - redirect url /index.php/* to/*
Проблема заключается в том, что если вы посетите одну из ссылок в более старом формате, страница по-прежнему технически работает, но css/images/etc не загружается, и она выглядит уродливой. Есть ли простой способ для перенаправить из формата /index.php/*
в новый формат /*
?
это мой существующий web.config
выполнения требуемых переделок следующее:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect static resources" stopProcessing="true">
<match url="^(ico|img|css|files|js)(.*)$" />
<action type="Rewrite" url="app/webroot/{R:1}{R:2}" appendQueryString="false" />
</rule>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" />
</rule>
<rule name="Imported Rule 2" stopProcessing="true">
<match url="^$" ignoreCase="false" />
<action type="Rewrite" url="/" />
</rule>
<rule name="Imported Rule 3" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<action type="Rewrite" url="/{R:1}" />
</rule>
<rule name="Imported Rule 4" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>