web-dev-qa-db-ja.com

vBulletin 5 + lighttpdのURL書き換え

VBulletin 5をlighttpdで起動して実行しようとしていますが、URLの書き換えで問題が発生しています。これがvBulletinが提供するApache.htaccessです。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?routestring=$1 [L,QSA]

#needed because admincp is an actual directory.
RewriteRule ^(admincp/)$ index.php?routestring=$1 [L,QSA]
</IfModule>

これが役立つ場合、これはvBulletinによって提供されるIIS configです

<?xml version="1.0" encoding="UTF-8"?>
<!-- This file is to support redirection in IIS.  It is harmless if you are running under Apache -->
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Main Redirect" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/{R:1}" />
                </rule>
                <rule name="Admincp" stopProcessing="true">
                    <match url="^(admincp/)$" ignoreCase="false" />
                    <action type="Rewrite" url="index.php/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Lighttpd url.rewriteに相当するものについて誰か提案がありますか?私の実験はすべてこれまで失敗しました。

Lighttpd-1.4.31-1を実行しています

私はこれを試しましたが、うまくいきませんでした。 .htaccessで[QS]を適切にエミュレートしていないことが関係していると思います

url.rewrite-once = ("^(.*)$" => "index.php?routestring=$1",
                    "^(admincp/)$)" => "index.php?routestring=$1")

これは私を近づけましたが、まだ完全には機能していません。

url.rewrite-if-not-file = ("^(.*)$" => "index.php?routestring=$1",
                    "^(admincp/)$)" => "index.php?routestring=$1")
1
Boots

正規表現はクエリ文字列を含むリクエストURI全体に適用されるため、 明示的に処理する にする必要があります。次のようなものを試してください。

url.rewrite-if-not-file = (
    "^/([^\?]+)(\?(.*))?$" => "index.php?routestring=$1&$3",
)
url.rewrite-once = (
    "^/(admincp/[^\?]+)(\?(.*))?$" => "index.php?routestring=$1&$3",
)

/admincp/はディレクトリと一致しないため、rewrite-if-not-fileの2番目のものは必要ない場合があります。

2
mgorven