子域和根域的htaccess配置目录

时间:2016-09-15 16:55:40

标签: .htaccess mod-rewrite url-rewriting

我的www目录中的文件夹设置如下:

  • www/forums
  • www/helpdesk
  • www/www

在基础www文件夹(不是www/www)中,我在htaccess文件中设置了以下内容,以便根据子目录进行重定向

  # Direct subdomains to appropriate folder in WWW directory
  RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
  RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

我还在主站点(index.php)上配置www.example.com以下设置 - 这也在www目录中的htaccess文件中:

  # Rewrite rules
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ www/$1 [L,QSA]

我面临的问题是我有来自forums.example.com的内容我要嵌入www.example.com(Vanilla Forums + WordPress插件) - 如果我使用管理面板配置,iFrame获取被阻止,因为它们是不同的域。

我发现当我转到www.example.com/forums时,我会获得与forums.examples.com相同的首页 - 但所有干净的网址都会中断。

当我查看.htaccess文件夹中的www/forums文件时,我看到以下配置

   RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ index.php\?p=$1 [QSA,L]

我需要对www目录中的.htaccess文件做些什么,这样当我转到www.example.com/forums时,它就像我去forums.example.com

1 个答案:

答案 0 :(得分:0)

  

...我的htaccess文件中设置以下基于子目录的重定向
  # Direct subdomains to appropriate folder in WWW directory

除了:该片段只是一个规范的非www到www重定向。它没有基于子目录重定向"也不是指导[任何]子域名"。 (?)

  

iFrame被阻止,因为它们是不同的域。

听起来好像您需要在Access-Control-Allow-Origin上设置forums.example.com HTTP响应标头,以允许内容被嵌入"在example.com?类似于www/forums/.htaccess文件中的以下内容(使用mod_headers):

Header set Access-Control-Allow-Origin "http://example.com"
  

我需要对.htaccess目录中的www文件做些什么,这样当我转到www.example.com/forums时,它就像我去forums.example.com一样}。

"所有干净的网址如何破坏"?但是,考虑到上面提到的HTTP标头,您不应该再做任何事情,仍然可以访问forums.example.com(而不是子目录)。

顺便提一下,您可以访问子目录(子域指向的子目录)的事实就是您的主机配置方式。通常,您应该阻止对子目录的访问,以防止出现重复的内容问题(以及任何其他问题,例如您提到的链接问题)。

另请注意,由于mod_rewrite指令的继承方式(或者在这种情况下不是)。 www/forums/.htaccess文件中的mod_rewrite指令完全覆盖父文件夹中的mod_rewrite指令。