网站重建后的.htaccess重定向循环

时间:2018-01-29 12:10:39

标签: apache .htaccess

我使用新的页面路径和反映路径的文件/目录结构重建了一个网站。新网站是基于PHP的,因此所有页面文件名都附加了“.php”,但我隐藏了公共路径中的.php扩展名。

旧网站在www.somedomain.com/es上有西班牙语发言人的主页。新网站有一个西班牙语发言人的主页,网址为www.somedomain.com/es/inicio.php。 inicio.php文件现在位于名为'/ es'的目录中。

我的.htaccess读到:

Redirect 301 /es/node/64 http://www.somedomain.com/es/vacaciones-y-actividades/actividades-locales

Redirect 301 /es http://www.somedomain.com/es/inicio

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]

成功重写页面请求,并按预期附加.php。像第一个重定向的工作正常。但是,导航到http://www.somedomain.com/es会导致重定向循环。

为什么?

1 个答案:

答案 0 :(得分:0)

导航到http://www.somedomain.com/es会导致重定向循环错误,因为您的Redirect模式/es也与目标路径/es/inicio匹配。您需要修复它,使您的模式与目标路径不匹配。使用RedirectMatch和正则表达式模式来解决这个问题。

RedirectMatch 301 ^/es/?$ http://example.com/es/initio

清除浏览器缓存,或者如果问题仍然存在,请使用不同的浏览器进行测试。