1

私のドメインには、sf2 アプリケーションを含むサブフォルダーがあります。アプリにアクセスするための実際の URL は次のようになります: www.mydomain.com/subfolder/web

URLから「/web」を適切に削除したい。

サブフォラーのこのhtaccessでそれをやろうとしました:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>

Web ディレクトリでリクエストをリダイレクトする

しかし、このメッセージでホーム URL に移動したい場合、404 が表示されます: 「'GET /subfolder/' のルートが見つかりません」

私は何かが欠けていることを知っていますが、何が本当にわからないので、htaccessの専門家ではありません

PS : 共有ホスティングを使用しているため、問題を解決するために VirtualHost を作成することはできません

4

2 に答える 2

1

シンボリックリンクを使用しています。

ウェブルートから: ln -s subfolder/web newfolder

于 2013-03-07T00:02:28.277 に答える
0

RewriteRule のドキュメント http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteruleを確認してください。

渡す最初のパラメーターは、一致するパターンです

基本的に、サブフォルダー内の任意のディレクトリに一致し、それを web/ にリダイレクトしています

あなたが欲しいのはこのようなものだと思います

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} ! ^subfolder/web.
RewriteRule ^subfolder(.*)$ subfolder/web/$1 [QSA,L]

したがって、これが行うことは次のとおりだと思います。

  • リクエストはファイルではなく、subfolder/web または subfolder/web/ ではありませんが、
  • URL を subfolder(.*)$ から subfolder/web/$1 に書き換えます
于 2013-03-06T23:12:25.427 に答える