我正在使用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而不会导致循环?我已经尝试了几乎所有在其他线程中发布的内容,但它们都没有工作。
答案 0 :(得分:0)
您需要在重写URL之前进行重定向。您还需要检查您是否实际上正在重写合法资源。
交换规则,重定向应首先发生
勾选drupal规则
<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>