1

mod_rewrite に問題があります。

タイトルでそれらの URI をリダイレクトしたい。私は次のルールを使用します

RewriteEngine on

RewriteCond $1 !^(folders not to be redirected e.g. css|images)
RewriteCond $1 !^(.*).(file extension e.g. png|css|txt|php)

RewriteRule ^(.*)$ index.php?id=$1 [L]

すべてのリソースをフォルダーに配置した場合にのみ機能します。そうでない場合は、次のように表示されます。

"/foo/index.php" not found.

解決するために、すべてのリソースを「www」フォルダーに入れました

しかし、たとえば「foo」のサブフォルダーからリソースをロードしようとすると、次のように表示されます。

The requested URL "/foo/foo2" was not found on this server.

「/foo/foo2」や「/foo/foo2/foo3」などのサブフォルダーからリソースをロードするにはどうすればよいですか?

また、フォルダー内の index.php の自動検索の問題をどのように解決できますか?

4

1 に答える 1

1

以下を使用して、目的の結果を達成できると思います。ファイル拡張子でフィルタリングするのではなく、ファイルが実際に存在するかどうかを確認します。少し異なる点の 1 つは、最初にリンクの末尾にスラッシュを追加することです。これは望ましくない場合があります。

RewriteEngine on
RewriteBase /

# This appends a trailing slash. You will have to update http://so with your domain.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://so/$1/ [L,R=301]

# This does the internal redirect
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ /index.php?id=$1 [L]

末尾のスラッシュが必要ない場合は、次を使用できます

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?id=$1 [L]
于 2013-04-28T15:44:04.610 に答える