htaccess重定向从主域加载子域的特定图像URL

时间:2016-10-05 05:24:02

标签: apache .htaccess mod-rewrite url-redirection mod-alias

我有子域名(us.example.com)和主域名(example.com)。我想将我的子域url重定向到主域,仅用于特定图像。例如,如果我点击http://us.example.com/images/test.jpg,那么它应该重定向到http://example.com/images/test.jpg

我正在尝试301重定向,如下所示,但它无法正常工作。

Redirect 301 https://us.example.com/images/test.jpg  https://example.com/images/test.jpg

我也尝试了其他规则,但它们都在完整的图像目录上工作,而不是目录下的特定图像。

更新 改变了这样的规则 -

RewriteCond %{HTTP_HOST} ^us\.example\.com$ [NC] RewriteRule ^/?images/test.jpg$ https://example.com/images/test.jpg [R=301,L]

但没有运气。

2 个答案:

答案 0 :(得分:1)

mod_alias 中的Redirect directive具有以下语法:

Redirect [status] [URL-path] URL

并且,如您所见,它接收/接受URL路径,而不是匹配的整个URI / URL。

对于子域匹配,请使用<if>指令:

<If "%{HTTP_HOST} == 'us.example.com'">
    RedirectPermanent /imges/test.jpg https://example.com/images/test.jpg
</If>

使用 mod_rewrite 可以实现相同目的:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^us\.example\.com$ [NC]
RewriteRule ^/?images/test.jpg$ https://example.com/images/test.jpg [R=301,L]

答案 1 :(得分:0)

试试这个伴侣,

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^us.domain.com$ [NC]
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
</IfModule>

上述.htaccess会发生什么,

如果您访问

  

us.domain.com/somelink

它将重定向到

  

domain.com/somelink

编辑:

假设上述内容无法通过符号链接尝试下面的内容

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^us.domain.com [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

更新1:

仅限test.jpg

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^us.domain.com/images/test.jpg [NC]
    RewriteRule (.*) http://www.domain.com/images/test.jpg [R=301,L]
</IfModule>