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")
正規表現はクエリ文字列を含むリクエスト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番目のものは必要ない場合があります。