我正在Drupal 9多站点上工作,我想拆分.htaccess
文件,每个站点一个,以创建不同的重定向规则。
我知道可以在drupal_root/.htaccess上添加所有规则,但我更喜欢每个站点有一个.htaccess
。
结构为:
drupal_root/sites/site-1/
drupal_root/sites/site-2/
drupal_root/sites/site-3/
drupal_root/sites/site-4/
我想在drupal_root/sites/site-1/
中添加.htaccess
,在drupal_root/sites/site-2/
中添加另一个不同的
我尝试在drupal_root/sites/site-1/
上直接添加.htaccess
,但不起作用。
# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.dev.{site-1}.com/test/?$ [OR]
RewriteCond %{HTTP_HOST} ^dev.{site-1}.com/test/?$ [NC]
RewriteRule ^(.*)$ https://www.dev.{site-1}.com/testredirect [R,L]
</IfModule>
大概是用来访问"站点-1";实际上不包含/sites/site-1/
?在这种情况下,URL需要(由Apache(内部重写到这个目录(或的子目录(,以便(由Apache处理(/sites/site-1/.htaccess
文件,但我不相信会发生这种情况(因为所有事情都是由根目录中的核心Drupal安装来处理的,目的是进行"多站点"安装(。
所以,我不认为你的建议是现实可行的,我担心(如果没有更多的工作(。
通常,您需要有多个";单独的";Drupal安装可以有单独的.htaccess
文件。
Drupal SE网站上的以下问题似乎支持了这一点;重定向模块";以管理每个站点的重定向。
- Drupal堆栈交换-多站点的逐站点htaccess
旁白:
RewriteCond %{HTTP_HOST} ^www.dev.{site-1}.com/test/?$ [OR] RewriteCond %{HTTP_HOST} ^dev.{site-1}.com/test/?$ [NC] RewriteRule ^(.*)$ https://www.dev.{site-1}.com/testredirect [R,L]
由于HTTP_HOST
服务器变量仅包含请求中的主机名,而不包含URL路径,因此该规则无论如何都不会执行任何操作。但是,如果这个CCD_ 16文件只打算在用户向";站点-1";?
例如,它应该写为:
RewriteCond %{HTTP_HOST} ^(www.)?dev.{site-1}.com.?$ [NC]
RewriteRule ^test/?$ https://www.dev.{site-1}.com/testredirect [R,L]