web-dev-qa-db-ja.com

シンボリックリンクとインデックスファイルを含む.htaccess設定が期待どおりに機能しない

多くのWeb開発者と同様に、公的に提供されているディレクトリに存在するファイルに対する要求ではない場合、.htaccessを使用して、単一のエントリポイントを介してすべてのトラフィックをドメインに転送するのが好きです。

だからこのようなもの:

RewriteEngine On
# enable symbolic links
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+) index.php [L]

これは、リクエストがcssファイルまたは画像に対するものでない場合、index.phpがリクエストを取得し、何をするかを選択できることを意味します(コンテンツまたはおそらく404を提供します)

うまく機能しますが、解決に役立たないように思われる問題に遭遇しました。

私のドキュメントルートは次のようになります。

asymboliclink -> /somewhere/else
css
.htaccess
img
includes
index.php

それでも、Apacheはディレクトリへのシンボリックリンクをディレクトリとは見なしません。ルートのindex.phpにリクエストを渡します。独自のindex.phpを持つフォルダーへのリンクであるため、リンクをフォルダーであるかのように提供したいと思います。ブラウザのアドレスバーに入力することで http://example.com/asymboliclink/index.php にアクセスできますが、 http: //example.com/asymboliclink

これを実現するには、.htaccessファイルに何を追加する必要がありますか?

14
poolnoodl

使用 -lシンボリックリンクをテストするためのスイッチ

RewriteEngine On
# enable symbolic links
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+) index.php [L]

ドキュメンテーション

http://httpd.Apache.org/docs/2.0/mod/mod_rewrite.html --ctrl + f for "TestStringをパス名として扱い、存在するかどうかをテストします。これはシンボリックです。リンク。"

20
Jason

-lフラグはシンボリックリンクを参照します

RewriteEngine On
# enable symbolic links
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+) index.php [L]
13