第一次发表海报。对mod_rewrite来说很新。我在共享服务器上,这个问题的上下文是我的root帐户下的虚拟目录。
域(domain.tld)将包含表示静态.html文件的年度迷你站点的子目录。子目录名称(yyyy)将是4位数年份(例如,“2010”)。
我希望对domain.tld/yyyy/file.html
的任何调用在浏览器地址栏中显示为yyyy.domain.tld/file.html
,并且(当然)可以正确加载页面。
我已经通过使用...
强制删除“www”RewriteCond %{HTTP_HOST} ^www\.domain\.tld [NC]
RewriteRule (.*) http://domain.tld/$1 [R=301,L]
到目前为止一切顺利。
但是无论我在那之后尝试什么,我都无法让子域强制到域的前面。
这是我尝试过的一个比较复杂的例子(毫无疑问是错误的)......
RewriteCond %{HTTP_HOST} ^domain\.tld/([0-9]+)/([a-z-]+)\.html [NC]
RewriteRule (.*) %1.domain.tld/%2.html [NC]
这不会破坏任何东西(我可以告诉),但它也没有做我想做的事情。即,如果我输入yyyy.domain.tld
,我会在地址栏中看到yyyy.domain.tld
,导航会给我yyyy.domain.tld/file.html
等等。很好。但是,如果还要输入domain.tld/yyyy
,我会看到domain.tld/yyyy
等,这不是我希望人们看到它的方式。它不会重定向或掩盖或别名或任何你称之为。
甚至可以强迫一个人看一眼那样吗?我应该用DNS处理这个吗?
提前致谢!
答案 0 :(得分:0)
HTTP_HOST 仅包含HTTP Host值。所以试试这个:
RewriteCond %{HTTP_HOST} ^domain\.tld$
RewriteRule ^([0-9]+)/([a-z-]+)\.html$ http://$1.domain.tld/$2.html [NC,L,R=301]