英文:
How can I create a redirection in IIS to always redirect to https://www.example.com and remove index.php from the URL?
问题
我想创建一个IIS服务器的URL重定向,但它不起作用。我希望无论何种情况下,如果一个人输入:(http://example.com、https://example.com、www.example.com、http://www.example.com),都将重定向到https://www.example.com。您还应该从URL中删除index.php。还有一些例外的库,您应该忽略。
这是我尝试的方式:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <defaultDocument>
      <files>
        <add value="default.php"/>
      </files>
    </defaultDocument>
    <rewrite>
      <rules>
        <rule name="RuleRemoveIndex" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            <add input="{REQUEST_URI}" matchType="Pattern" pattern="*/folder1*" ignoreCase="true" negate="true" />
            <add input="{REQUEST_URI}" pattern="*/folder2*" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true"/>
        </rule>
        <rule name="RedirectNonWwwToWww" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^example.com$" />
          </conditions>
          <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
        </rule>    
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
这是您提供的XML配置文件,已经翻译成中文。
英文:
I want to create an IIS server url redirection, but it doesn't work. I would like that if a person enters: (http://example.com, https://example.com, www.example.com, http://www.example.com) in any case, redirect to https://www.example.com You should also cut index.php from the url. And there are a few exception libraries that you should ignore.
This is how I tried it
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <defaultDocument>
      <files>
        <add value="default.php"/>
      </files>
    </defaultDocument>
    <rewrite>
      <rules>
            <rule name="RuleRemoveIndex" stopProcessing="true">
                <match url="^(.*)$" ignoreCase="false" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    <add input="{REQUEST_URI}" matchType="Pattern" pattern="*/folder1*" ignoreCase="true" negate="true" />
                    <add input="{REQUEST_URI}" pattern="*/folder2*" negate="true" />
                </conditions>
                <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true"/>
            </rule>
            <rule name="RedirectNonWwwToWww" stopProcessing="true">
              <match url=".*" />
              <conditions>
                <add input="{HTTP_HOST}" pattern="^example.com$" />
              </conditions>
              <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
            </rule>    
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
答案1
得分: 1
你可以尝试这个规则:
<rule name="RemoveIndex" stopProcessing="true">
    <match url="^(.*)$" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}.php" matchType="IsFile" ignoreCase="false" />
    </conditions>
    <action type="Rewrite" url="index.php" />
</rule>
<rule name="Force WWW and SSL" enabled="true" stopProcessing="true">
    <match url="^(.*)$" />
    <conditions logicalGrouping="MatchAny">
        <add input="{HTTP_HOST}" pattern="^[^www]" />
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" url="https://www.example.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
希望这有帮助!
英文:
You can try this rule:
 <rule name="RemoveIndex" stopProcessing="true">
    <match url="^(.*)$" />
       <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
          <add input="{REQUEST_FILENAME}.php" matchType="IsFile" ignoreCase="false" />
       </conditions>
    <action type="Rewrite" url="index.php" />
 </rule>
 <rule name="Force WWW and SSL" enabled="true" stopProcessing="true">
    <match url="^(.*)$" />
       <conditions logicalGrouping="MatchAny">
          <add input="{HTTP_HOST}" pattern="^[^www]" />
          <add input="{HTTPS}" pattern="off" />
       </conditions>
   <action type="Redirect" url="https://www.example.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论