从安装子目录中重定向,而无需创建循环



我在一个Drupal网站上工作,该网站在许多内容中具有硬编码的链接(我没有创建网站)。不幸的是,这意味着该站点必须在子目录中,例如" www.example.com/drupal",否则链接将破坏。我成功地将站点root重定向到子目录,并使用网站root 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重定向重新定向而不会引起循环?我几乎尝试了其他线程中发布的所有内容,但它们都无法使用。

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

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

  2. 将支票添加到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>

最新更新