我已经看了很多答案而且没有令人满意的答案我现在问我的问题:
我正在创建一个音乐节的网站,每年都会更新。我想保持ancients版本可访问。所以我有以下结构:
/
2011
2012
2013
.htaccess
每年,网址几乎相同。我想直接在根目录下访问实际网站(现在是2013)。例如:
aaa.com/festival/presentation -> aaa.com/2013/festival/presentation
aaa.com/programme/groupes -> aaa.com/2013/programme/groupes
用户不应该在网址中看到2013 /,而是访问网页,就像他会在栏中输入一样。
我已经尝试了一些像
这样的解决方案RewriteEngine on
RewriteRule ^(.*)$ 2013/$1
但是它不起作用:页面不会像我在网址中输入2013 /一样(我使用CakePHP并且它告诉我,控制器丢失了;它会找到一个名为ordner的控制器我整个网站都是。)
对我的需求有什么好的解决方案?
另一件事是,我想提出条件,在某些情况下,它不应该重写网址,实际上访问旧网站2012年,2011年等例如:
aaa.com/2012/presentation does not -> aaa.com/2013/2012/presentation
如果你可以帮助我的话,Thaaaaannnks一个looooot !!!!
答案 0 :(得分: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
目录中的文件或目录存在的条件,然后才会被重写。