1

私はすでに答えをたくさん探しました、そして答えを満足させることなく私は今私の問題に来ます:

毎年更新される音楽祭のウェブサイトを作っています。古代のバージョンにアクセスできるようにしておきたいです。だから私は次の構造を持っています:

/
2011
2012
2013
.htaccess

URLは毎年ほぼ同じです。そして、実際のWebサイト(現在は2013年)をルートのすぐ下からアクセスできるようにしたいと思います。例えば ​​:

aaa.com/festival/presentation -> aaa.com/2013/festival/presentation
aaa.com/programme/groupes     -> aaa.com/2013/programme/groupes

ユーザーはURLに2013/を表示しないでください。ただし、バーに入力するのと同じようにページにアクセスしてください。

私はすでに次のようないくつかの解決策を試しました

RewriteEngine on
RewriteRule ^(.*)$ 2013/$1

しかし、それは機能しません:ページは私がURLに2013 /を入力したかのようにレンダリングされません(私はCakePHPを使用し、コントローラーが欠落していると私に言います;それは私の全体がウェブサイトは)です。

私のニーズに合った良い解決策は何ですか?

調子:

もう1つは、条件を設定したいということです。たとえば、2012、2011などの古いWebサイトにアクセスするために、URLを書き換えてはならない場合があります。

aaa.com/2012/presentation does not -> aaa.com/2013/2012/presentation

あなたが私を助けることができれば、Thaaaaannnksは大騒ぎです!!!!

4

1 に答える 1

0

次のようなことを試してください:

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/2013%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/2013%{REQUEST_URI} -d
RewriteRule ^ /2013%{REQUEST_URI} [L]

または、%{TIME_YEAR}変数を使用して自動的に実行することもできますが、ニーズに適している場合があります。

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/%{TIME_YEAR}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%{TIME_YEAR}%{REQUEST_URI} -d
RewriteRule ^ /%{TIME_YEAR}%{REQUEST_URI} [L]

これは基本的に、要求された URIがディレクトリ内にファイルまたはディレクトリとして存在しなければならないという条件を追加してから、そのよう2013に書き換えます。

于 2012-11-11T20:51:30.687 に答える