0

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

私はほとんどそこにいると思いますが、リダイレクトを避けるために何かが欠けています。ルールはすべてのリクエストで一致し続けると思います。どんな助けでも大歓迎です。

4

1 に答える 1

0

私は実用的な解決策を見つけました。

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]

おそらくもっと良い方法がありますが、これは今のところうまくいくようです。

于 2012-07-12T10:24:29.313 に答える