.htaccess htaccess重写年度网站

.htaccess htaccess重写年度网站,.htaccess,cakephp,web,rewrite,.htaccess,Cakephp,Web,Rewrite,我已经寻找了很多答案,但没有令人满意的答案,我现在提出了我的问题: 我正在为音乐节创建一个网站,每年都会更新。我想保持古人版本的可访问性。因此,我有以下结构: / 2011 2012 2013 .htaccess 网址几乎每年都是一样的。我想让实际的网站(现在是2013年)直接在根目录下访问。例如: aaa.com/festival/presentation -> aaa.com/2013/festival/presentation aaa.com/programme/groupes

我已经寻找了很多答案,但没有令人满意的答案,我现在提出了我的问题:

我正在为音乐节创建一个网站,每年都会更新。我想保持古人版本的可访问性。因此,我有以下结构:

/
2011
2012
2013
.htaccess
网址几乎每年都是一样的。我想让实际的网站(现在是2013年)直接在根目录下访问。例如:

aaa.com/festival/presentation -> aaa.com/2013/festival/presentation
aaa.com/programme/groupes     -> aaa.com/2013/programme/groupes
aaa.com/2012/presentation does not -> aaa.com/2013/2012/presentation
用户不应该在url中看到2013/,而是像在栏中键入一样访问页面

我已经尝试过一些解决方案,比如

RewriteEngine on
RewriteRule ^(.*)$ 2013/$1
但它不起作用:页面的呈现方式不像我在url中输入了2013/(我使用CakePHP,它说我缺少控制器;它寻找一个名为ordner的控制器,我的整个网站都在其中)

对于我的需求,什么是好的解决方案

条件: 另一件事是,我想提出一个条件,在某些情况下,它不应该重写url,实际上是为了访问2012、2011等旧网站。例如:

aaa.com/festival/presentation -> aaa.com/2013/festival/presentation
aaa.com/programme/groupes     -> aaa.com/2013/programme/groupes
aaa.com/2012/presentation does not -> aaa.com/2013/2012/presentation

如果你能帮我的话,那真是个笨蛋

试试这样的方法:

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/2013%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/2013%{REQUEST_URI} -d
RewriteRule ^ /2013%{REQUEST_URI} [L]
或者可以使用
%{TIME\u 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
目录中,然后才能被重写