【问题标题】:How do I fix old links after modifing .htaccess for Joomla installation in a subfolder?修改 .htaccess 以在子文件夹中安装 Joomla 后如何修复旧链接?
【发布时间】:2011-01-27 12:08:13
【问题描述】:

我的主要 Joomla 安装在一个子目录中。我曾经使用 301 将用户从 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 静默重定向。 但我不知道该怎么做!

提前谢谢你!

【问题讨论】:

    标签: .htaccess joomla


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-15
          • 1970-01-01
          • 1970-01-01
          • 2017-11-10
          • 1970-01-01
          • 2013-01-29
          • 2020-05-26
          • 2015-03-10
          相关资源
          最近更新 更多