0

私はこのようなVirtualHostセットアップを持っています:

Alias /somedir /some/other/dir

http://example.com/somedirは正常に機能します

ただし、mod_rewrite/ somedir(クリーンURLが必要なCodeIgniterアプリ)を設定する必要があります。これがCodeIgniterwikiからのビットです:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

通常、mod_rewriteサブディレクトリで使用される場合RewriteBase、ディレクトリの名前と一致するように変更するだけで、それを機能させることができます。

RewriteBase /somedir

mod_alias...しかし、それは(404を取得して)動作しないようです。この問題の回避策はありますか?

4

2 に答える 2

0

以下は私のテストサーバーで機能したので、これを試してみると問題が解決するかもしれません..

仮想ホストで:

Alias /somedir /some/other/dir

RewriteEngine On

# I think these conditions should work correctly; the other ones shouldn't
# because the alias has not been applied at this stage of processing yet
RewriteCond /some/other/dir%{REQUEST_URI} !-d
RewriteCond /some/other/dir%{REQUEST_URI} !-f
# L is unnecessary in this context, but be sure to PT so mod_alias picks up
# on the rewrite
RewriteRule ^/somedir/(.*)$ /somedir/index.php/$1 [PT]
于 2010-07-25T21:35:52.740 に答える
0

私はあなたのサンプルをテストしていませんが、私自身の構成では、おそらく構成内の書き換えルールとの相互作用が原因で、PT フラグであまり成功していません。

エイリアスの使用を書き換え条件に制限し、書き換え出力で常にファイル システム パスを使用する方が簡単であることがわかりました。

Define SOME_DIR = "/somedir"
Define SOME_OTHER_PATH = "/some/other/dir"

Alias "${SOME_DIR}" "${SOME_OTHER_PATH}"

RewriteEngine On
RewriteCond ${SOME_DIR}%{REQUEST_URI} !-d
RewriteCond ${SOME_DIR}%{REQUEST_URI} !-f

RewriteRule ^${SOME_DIR}/(.*)$ ${SOME_OTHER_PATH}/index.php/$1 [NC,QSA,L]
于 2016-02-18T23:07:54.600 に答える