1

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

我正在为音乐节创建一个网站,该网站每年都会更新。我想保留古人的版本。所以我有以下结构:

/
2011
2012
2013
.htaccess

每年的网址几乎相同。我想让实际的网站(现在是 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,它告诉我,控制器丢失了;它会寻找一个名为 ordner 的控制器,我的整个网站是)。

什么是我需要的好解决方案?

健康)状况:

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

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

Thaaaaannnks 一个looooot,如果你能帮助我!!!!

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 回答