更新ubuntu到14.04.01,现在我的.htaccess似乎坏了

时间:2014-10-01 23:23:33

标签: php apache .htaccess cakephp mod-rewrite

我一直在使用以下的.htaccess并且一直工作正常,直到我做了一个do-release-upgrade并且​​确实更新了apache2。

我现在的.htaccess是(我正在使用cakephp 2.3)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /   

# empty url -> redirect to en/
RewriteCond %{QUERY_STRING} !lang=(en|es)
RewriteRule ^$ en/welcome [R=301,L]

# url is ONLY '/en' or '/es' -> redirect to /en/welcome or /es/welcome (adding slash)
RewriteRule ^(en|es)$  $1/welcome [R=301,L]

# url is ONLY '/en/' or '/es/' -> redirect to /en/welcome or /es/welcome (adding slash)
RewriteRule ^(en|es)/$  $1/welcome [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

所以,如果有人去了

www.domain.com - &gt; www.domain.com/en/welcome

www.domain.com/en - &gt; www.domain.com/en/welcome

www.domain.com/es - &gt; www.domain.com/es/welcome

www.domain.com/en/ - &gt; www.domain.com/en/welcome

www.domain.com/es/ - &gt; www.domain.com/es/welcome

第一个重定向是停止工作的那个..如果有人进入根域,它就不会被重定向到默认的英文版本。

在我的情况下,我设法解决了这个问题,感谢@dav,说看看cakephp路由中的重定向。

所以我删除了我的.htaccess中重写的前两个

#RewriteCond %{QUERY_STRING} !lang=(en|es)
#RewriteRule ^$ en/welcome [R=301,L]

在我的routes.php上添加了以下行(在所有路由器::连接之前)

Router::redirect('/', array('language' => 'en','controller' => 'welcome', 'action'=>'/'));

0 个答案:

没有答案