Htaccess重定向而不定义硬编码域名

时间:2016-11-12 09:59:41

标签: php apache .htaccess redirect mod-rewrite

我发现很多关于使用htaccess进行重定向的问题。 然而,似乎没有人和我有同样的“问题”。

我想要的是重定向,如果访问目录,它应该重定向到子域。到目前为止它的优点和工作。但是,我不想在更改域名时一直更改我的htaccess。

所以我有:

RedirectMatch 301 ^/subdir/(.*)$ http://subdir.example.com/$1

但在我的情况下,我将我的应用程序放在域example2.com上,我必须更改名称。 是否有可能有这样的事情:

RedirectMatch 301 ^**(capture_hostname)**/subdir/(.*)$ http://subdir.**(put_hostname_here)**/$1

所有“解决方案”似乎都适用于在htaccess中定义域名。 我用htaccess来解决这个问题的工作还不够。因此,我们在一起:))

1 个答案:

答案 0 :(得分:1)

您可以使用mod_rewrite规则执行该操作并从RewriteCond捕获主机名:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^(subdir)(/.*)?$ http://$1.%1$2 [L,NC,R=301,NE]

%1是从RewriteCond指令捕获的值,$1subdir$2subdir/

之后的部分