【问题标题】:Apache mod_rewrite: how to redirect addon domains subfolder access to addon domain itself?Apache mod_rewrite:如何将插件域子文件夹访问重定向到插件域本身?
【发布时间】:2011-03-15 14:44:10
【问题描述】:

Apache 服务器上的情况(目录树):

maindomain.com/
|
|_ .htaccess (just an empty file, no rule in here)
|
|_ addondomain1.com/
|  |
|  |_ .htaccess
|  |_ index.html
|
|_ addondomain2.com/
   |
   |_ .htaccess
   |_ index.html

目前 addondomain1.com 中的文件可以通过以下方式查看:

http://www.addondomain1.com/index.html
http://www.addondomain1.com/
http://www.addondomain1.com
http://www.maindomain.com/addondomain1.com/index.html

我想重定向所有请求:

http://maindomain/addondomain1.com/some/path/anypage.html(带或不带“www”)

到相同的路径/文件,但在 addondomain1.com 下并且始终使用“www”:

http://www.addondomain1.com/some/path/page.html

为了尽量做到这一点,我在maindomain.com/addondomain1.com/.htaccess中放置了这条规则:

RewriteCond %{HTTP_HOST} !^www\.addondomain1\.com$ 
RewriteRule ^(.*)$ "http://wwww.addondomain1.com/$1" [R=301,L]

这个效果几乎很好,并且可以很好地重定向以下所有内容:

http://addondomain1.com/index.html >> http://www.addondomain1.com/index.html
http://www.addondomain1.com/ >> http://www.addondomain1.com/
http://www.addondomain1.com  >> http://www.addondomain1.com
http://www.maindomain.com/addondomain1.com/index.html >> http://www.addondomain1.com/index.html
http://www.maindomain.com/addondomain1.com/ >> http://www.addondomain1.com/
http://maindomain.com/addondomain1.com/ >> http://www.addondomain1.com/

但是很遗憾去的时候:

http://maindomain.com/addondomain1.com
http://www.maindomain.com/addondomain1.com

注意上面的两个链接都没有最后的斜杠,它重定向到:

http://www.addondomain1.com//server/root/path/addondomain1.com

我认为正则表达式^(.*)$ 正在获取“addondomain1.com”作为一部分,因为缺少最后的斜杠。您知道如何解决/解决此问题吗?

谢谢!

【问题讨论】:

标签: apache mod-rewrite dns cpanel add-on


【解决方案1】:
DirectorySlash Off

【讨论】:

  • 仅此而已?! :) 我会试试这个,让你知道,谢谢!
  • 不,它不起作用,我遇到的问题与以前完全相同。无论如何感谢您的回答
  • 如果没有,您能否启用您的 RewriteLog 并给我们一个正在发生的事情的样本?另外:为什么这有效:http://www.main-domain.com/addon-domain-1.com/index.html >> http://www.addon-domain-1.com/index.html 因为它不适用于您当前的设置:我们应该了解的任何其他 .htaccess 规则?
  • 我发现了这个问题,我的问题中的重写 url 是正确的,但是我在 RewriteRule 中添加了 4 个“w”字符,并且我也在问题中写了它们。 :( RewriteLog 给我看了。
【解决方案2】:

试试这个:

RewriteCond %{HTTP_HOST} !^www\.addondomain1\.com$
RewriteCond %{REQUEST_URI} ^/[^/]+/(.*)
RewriteRule ^ http://wwww.addondomain1.com/%1 [R=301,L]

【讨论】:

    猜你喜欢
    • 2013-02-04
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    相关资源
    最近更新 更多