Drupal从安装子目录重定向而不创建循环

时间:2012-10-24 07:18:59

标签: apache .htaccess drupal mod-rewrite

我正在使用Drupal网站,该网站在许多内容中都有硬编码链接(我没有创建网站)。不幸的是,这意味着该网站必须位于“www.example.com/drupal”等子目录中,否则链接就会中断。我已成功将站点根目录重定向到子目录,并使用站点根目录htaccess文件中的以下代码隐藏它:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule (.*) drupal/$1 [L]
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

但是,如果我访问www.example.com/drupal,子目录仍会显示。这意味着www.example.com和www.example.com/drupal具有相同的内容,这对SEO不利。有没有办法使/ drupal重定向到root而不会导致循环?我已经尝试了几乎所有在其他线程中发布的内容,但它们都没有工作。

1 个答案:

答案 0 :(得分:0)

您需要在重写URL之前进行重定向。您还需要检查您是否实际上正在重写合法资源。

  1. 交换规则,重定向应首先发生

  2. 勾选drupal规则


  3. <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
    RewriteCond %{REQUEST_URI} !^/drupal
    RewriteRule (.*) drupal/$1 [L]
    </IfModule>