0

私のサイトのルートには、concrete5 がインストールされています。問題は、C5 ファイル構造がかなり多様であり、サブディレクトリやサブドメインと混ざり合っていることです。何が自分のコードで何が C5 なのかわかりません。嫌いです。

私の解決策は、すべてを /_concrete/ フォルダーに移動することですが、ドメインがルートを指す必要があるため、ここでファイルを使用することはできません。

.htaccess を入力してください: www.domain.com (サブドメインを無視) のすべてのインスタンスを www.domain.com/_concrete/ にリダイレクトするスクリプトを作成する必要がありますが、透過的な 301 ではなく、単なるエイリアスです。明確にするために:同じものを表示する必要がありますwww.domain.com/page/。URL を に変更しないでください。www.domain.com/_concrete/page/www.domain.com/page/www.domain.com/_concrete/page/

他の場所で使用している同様のスクリプトからこれを適応させました。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /_concrete/$1 [L,QSA]

ただし、これはサーバーエラーを引き起こすだけです。私が近くにいることを願っています-誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

1

値がファイル名ではないかどうかをサーバーに確認するように指示していますが、_concreteディレクトリ自体を無視することはありません (スクリプトと一致してループを作成します)。

これにより、やりたいことに近づくことができます。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^_concrete
RewriteRule ^(.*)$ _concrete/$1 [L,QSA]

さらに、存在するディレクトリも無視したい場合があります。存在するため、その時点_concreteで一致しなくなります。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ _concrete/$1 [L,QSA]
于 2013-05-24T03:16:33.303 に答える