使用 mod_rewrite 将子域名重定向到隐藏文件夹

使用 mod_rewrite 将子域名重定向到隐藏文件夹

我想将我的博客保存在子文件夹中domain_com/htdocs/blog 并使用 blog.domain.com 访问它。我可以使用 apache 的 mod_rewrite 获取它:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^blog\.domain\.com
RewriteCond %{HTTP_HOST} !^/blog
RewriteRule ^(.*)$ /blog/$1 [L]

但我还想将 hxxp://domain.com/blog 重定向到 hxxp://blog.domain.com(只是因为我想向用户隐藏它)。简单的重定向如下:

RewriteCond %{HTTP_HOST} ^wojtyniak\.com$
RewriteRule %{REQUEST_URI} ^/foo
RewriteRule ^(.*)$      http://foo.wojtyniak.com  [L,R=301]

导致重定向循环。有没有办法实现这种不产生循环的重定向?非常感谢!

PS. 抱歉,这些 hxxp 问题,但 serverfault 认为这些是链接,不允许我发布多个。

答案1

最理想的解决方案是将其放在虚拟主机上,并将博客文件托管在 htdocs 目录之外的某个地方。

我假设你没有权限进行这些必要的更改,但万一你有权限,这是它的文档

答案2

是的,我知道。两年后,这里不再需要这个了。但也许有人被 Google 重定向到这里。

# Rewrite <subdomain>.example.com/<path> to example.com/<subdomain>/<path>
#
# Skip rewrite if no hostname or if subdomain is www
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
# Extract (required) subdomain (%1), and first path element (%3), discard port number if present (%2)
RewriteCond %{HTTP_HOST}<>%{REQUEST_URI} ^([^.]+)\.example\.com(:80)?<>/([^/]*) [NC]
# Rewrite only when subdomain not equal to first path element (prevents mod_rewrite recursion)
RewriteCond %1<>%3 !^(.*)<>\1$ [NC]
# Rewrite to /subdomain/path
RewriteRule ^(.*) /%1/$1 [L]
#

我发现这里http://www.webmasterworld.com/forum92/1310.htm

相关内容