【问题标题】:Trouble with converting IIS rewrite rule to Apache rewrite rule将 IIS 重写规则转换为 Apache 重写规则的问题
【发布时间】:2012-07-12 00:28:00
【问题描述】:

我在将 IIS 重写规则转换为 Apache 时遇到问题。

该规则的目的是将domain.com/c/name/ 重定向到domain.com/?company=name。 它还应该将domain.com/c/name/?page=me 重定向到domain.com/?page=me&company=name

这是原始的 IIS web.config 文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="multi-company management" enabled="true">
                <match url="^c/(.+?)/(.*)" />
                <action type="Rewrite" url="{R:2}?company={R:1}" logRewrittenUrl="false" />
            </rule>
        </rules>
    </rewrite>
    <tracing>
        <traceFailedRequests>
            <add path="*">
                <traceAreas>
                    <add provider="WWW Server" areas="Rewrite" verbosity="Verbose" />
                </traceAreas>
                <failureDefinitions statusCodes="200-399" />
            </add>
        </traceFailedRequests>
    </tracing>
</system.webServer>
</configuration>

我想出的 apache url 给出了错误ERR_TOO_MANY_REDIRECTS,如下所示:

RewriteEngine on
RewriteRule ^c/(.+?)/(.*)$ /$2?company=$1

我想我快到了,但缺少一些东西来避免继续重定向。我认为该规则在每个请求上都保持匹配。任何帮助将不胜感激。

【问题讨论】:

    标签: apache iis mod-rewrite rewrite


    【解决方案1】:

    我找到了一个可行的解决方案。

    RewriteEngine on
    
    #Rewrite JS, CSS and Images
    RewriteCond %{REQUEST_URI} (.css|.js|.css.php|.png|.jpg|.jpeg|.gif)$
    RewriteRule ^c/(.+?)/(.*) /$2 [L]
    
    #Rewrite php pages (adding company as request param)
    RewriteCond %{REQUEST_URI} (.php|/)$
    RewriteRule ^c/(.+?)/(.*)$ /$2?company=$1 [QSA]
    

    可能有更好的方法,但这似乎到目前为止有效。

    【讨论】:

      猜你喜欢
      • 2016-01-02
      • 2014-07-03
      • 2014-10-29
      • 2011-04-25
      • 2014-06-30
      • 2016-08-09
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      相关资源
      最近更新 更多