1

開発環境 (Apache 2) で次の書き換えを使用していますが、正常に動作し、ライブ環境 (LiteSpeed) にアップロードしましたが、動作しなくなりました:(

なぜ次のことを考えるのですか?

ホストがサポートしていない "P" ディレクティブ "mod_proxy" を使用しています。どうすればこれを回避できますか?

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On

  RewriteBase /

  RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{HTTP_HOST} !^www\. [NC]
  RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com
  RewriteRule ^(.*)$ http://example.com/folder/%1/$1 [QSA,NC,P]

  # Removes index.php
  RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]

</IfModule>
4

1 に答える 1

1

私はこの問題に対して別のアプローチを取りました。どうやら mod_proxy メソッドは非効率的であるため、PHP で簡単なコードを使用して解決し、サブドメインを特定し、条件を適用して $subdomain が空の文字列ではないことを確認しました。

$url_parts = explode('.', str_replace('.example.com', '', $_SERVER['HTTP_HOST']));
$subdomain = ($url_parts[0] !== '') ? $url_parts[0] : '';

サブドメインがあることがわかったら、正しいページにリダイレクトしています。

于 2012-09-01T16:01:06.737 に答える