在子文件夹中修改.htaccess for Joomla安装后,如何修复旧链接?

时间:2011-01-27 12:08:13

标签: .htaccess joomla

我将主要的Joomla安装在子目录中。我过去常常将用户从www.mysite.com重定向到www.mysite.com/subdir,这样就可以将实时网站完全脱位了。

我实际上并不喜欢所有URL都以子目录/ subdir /开头的事实(我也认为这对SEO不太好)所以我修改了我的.htaccess文件:

RewriteEngine On

RewriteBase / 
# Add trailing slash if path does not contain a period or end with a slash
RewriteCond %{REQUEST_URI} !(\.|/$) 
RewriteRule (.*) http://www.mysite.com/$1/ [R=301,L] 

#Change http://yoursite.com to http://www.mysite.com (Optional) 
RewriteCond %{HTTP_HOST} ^mysite.com$ 
RewriteRule ^/?(.*)$ http://www.mysite.com/$1 [R=301,L]

#Rewrites http://www.mysite.com/subdir to http://www.mysite.com/
RewriteRule ^(.*)$ subdir/$1 [L]

我还编辑了Joomla的配置文件!现在,网站中的所有链接都指向(正确)www.main.com/theirquery,并指向www.main.com/subdir/theirquery

然而,现在,所有旧的链接(例如已发布到其他网站的链接)似乎已被破坏(404):我该如何解决这个问题? 我想我必须将它们重定向(301)到新的无子目录地址,这将是(另一次)使用我发布的htaccess静默重定向。 但我不知道怎么做!

提前谢谢!

3 个答案:

答案 0 :(得分:0)

您可以尝试在configuration.php中设置$ live_site参数吗?您需要直接编辑它,而不是通过Joomla的后端编辑。

答案 1 :(得分:0)

您需要将此添加到您的htaccess。

RewriteRule ^subdir/(.*)$ /$1 [R=301,NC,L]

答案 2 :(得分:0)

这是不可能的,因为旧的链接不是物理的,而是存储在数据库中,因此如果不再次通过数据库,就不可能重定向它们。