1

subdirectory / index.phpに移動する必要がある特定のサブディレクトリ内の要求を除いて、すべての要求がindex.phpに移動する必要があるサイトがあります。

サブディレクトリのインデックスページで使用するために、ディレクトリパスをクエリ文字列に変換したいと思います。

私は本当にhtaccessファイルについてほとんど考えていません、そしてこの質問は百回答えられたと確信しています、しかし私は答えを得るために何を検索するべきかを理解することができません。

だから-これは私がこれらの条件下で起こりたいことです...

RULE 1
www.example.com/anything_or_nothing <goes to> /index.php
www.example.com/anything/anything_else <goes to> /index.php
RULE 2
www.example.com/subdirectory/ <goes to> /subdirectory/index.php
RULE 3
www.example.com/subdirectory/some_other_directory/ <goes to> /subdirectory/index.php?a=some_other_directory

これは私が現在持っているものです。動作しません-少なくとも、ルール1は動作し、ルール2は動作します(これは、物理的な/ subdirectoryが存在し、index.phpがデフォルトとして提供されているためだけだと思います)。ルール3は動作しません。

Options All -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !^/?timeline/
#RULE 1
RewriteRule ^.*$ ./index.php
#RULE 2
RewriteRule ^/sub.*$ /sub/index.php
#RULE 3
RewriteRule ^/sub/([^/\.]+)/?$ /sub/index.php?a=$1 [L,NC]

サブディレクトリで.htaccessファイルを機能させることができなかったので、すべてのルールをルートの.htaccessファイルに入れたいと思います。

私は他のサイトからこの.htaccessをまとめたので、無知のレベルについてお詫びしますが、どこに行けばいいのかわかりません...

前もって感謝します。

追加情報>>>>>>>>

私が試した他のこと。

これ

RewriteRule ^/sub/([^/\.]+)/?$ /sub/index.php?a=$1 [L,NC]
RewriteRule ^/sub.*$ /sub/index.php
RewriteRule ^.*$ ./index.php

すべてのルールの動作を停止します。

これ:

RewriteRule ^.*$ ./index.php
RewriteRule ^/sub/([^/\.]+)/?$ /sub/index.php?a=$1 [L,NC]
RewriteRule ^/sub.*$ /sub/index.php

元の例のように動作するようです。

4

1 に答える 1

0

あなたが自分自身に答えたように、2番目のルールは不必要です。

# Don't rewrite if file already exists to prevent rewriting images, scripts etc
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]

# Rewrite sub/anything to sub/index.php?a=anything
RewriteRule ^sub/([^/]+)$ sub/index.php?a=$1 [L,NC]

# Fallback all unknown requests to index.php
RewriteRule .* index.php [L,NC]

警告の注記:このアプローチでは、存在しないファイルをindex.phpに書き換えるときに、すべての自然な404エラーが完全に非表示になります。

于 2013-03-12T13:11:48.100 に答える