2

URL の例:

example.com/user

/user は、シンボリック リンクされたディレクトリであり、サイトのコンテンツへの有効な URL です。Horde Routes を使用してコンテンツをリクエストし、サイトへのすべてのリクエストは index.php を経由します。

現在、次のような .htaccess ファイルがあります。

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

#allow cool urls
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php [L]
#allow to have Url without index.php

ただし、/user に移動すると、Web ページではなくディレクトリの内容が一覧表示されます。シンボリックリンクを無視することは可能ですか?

それに加えて、次のように要求する場合があります。

example.com/user/some-css-file.css

これは無視してはならない有効な要求です。では、シンボリックリンクを介してファイルをリクエストできるようにすることは可能ですが、ベースシンボリックリンク自体は無視され、index.php に移動しますか?

ありがとう :)

4

2 に答える 2

1

シンボリックリンクを無視するのは忘れて、別の RewriteRule を作成してください。「クールな URL を許可する」ルールの前に配置します。

RewriteCond %{REQUEST_URI} ^/user/$ 
RewriteRule (.*) /index.php [L]

したがって、 http://www.example.com/user/またはhttp://www.example.com/user はコンテンツに移動する必要があります。[L] は、それ以上のルールが処理されないようにする必要があります。

于 2009-11-21T12:33:49.923 に答える
1

実際には既存のディレクトリであるため、 が要求された場合のテスト!-dは失敗します。/user/その条件なしで使用し、既存のファイルへの直接アクセスのみを許可し、ディレクトリには許可しない場合があります。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index.php [L]

さらに、 index.phpのリクエストでファイルシステムのルックアップが不要になるように、パターン^(.*)を次のように置き換えることができます。!^index\.php$

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ index.php [L]
于 2009-11-21T12:41:44.133 に答える