是否可以使用.htaccess更改子域的目录?

max*_*max 5 php apache .htaccess mod-rewrite

我有一个图像共享网站,我曾经有一个图像的子域,但我不得不删除它,所以现在我使用图像的真实路径:

旧网址:

http://img.site.com/images/2013/03/abc.jpg
Run Code Online (Sandbox Code Playgroud)

新网址:

http://site.com/files/images/2013/03/abc.jpg
Run Code Online (Sandbox Code Playgroud)

这个问题是我有很多图像链接来自其他网站和仍在使用旧网址的搜索引擎.

旧子域的问题是它的directory(public_html/files)和它的名称(img.)是不同的,因此需要特殊的配置来处理它,我厌倦了它导致的所有问题.

现在我已经创建了一个img.指向public_html/img目录的普通子域,因此不需要额外的配置,但是我的图像仍然在 public_html/files目录中.

我想我现在要做的就是以某种方式使用.htacess替换旧目录.我不知道这是否可行.

.htaccess目前是:

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteBase /
    RewriteCond %{HTTP_HOST} ^img\.site\.com$ [NC]
    RewriteRule ^(images/.*)$ http://site.com/files/images/$1[R=301,NC,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{ENV:REDIRECT_STATUS} ^$

    RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
</IfModule>
Run Code Online (Sandbox Code Playgroud)

当我尝试从子域调用图像时,我得到:

Not Found

The requested URL /files/images/2013/10/15c100d1da3216850d6cceb4ce57eaab6d26fc92.jpg was not found on this server.
img.site.com
Run Code Online (Sandbox Code Playgroud)

我的错误日志报告:

[Mon Oct 21 02:58:46 2013] [error] [client 85.185.229.221] script '/home/site/domains/site.com/public_html/img/index.php' not found or unable to stat
Run Code Online (Sandbox Code Playgroud)

Jon*_*Lin 1

您应该重定向到正确的位置。在目录中的 htaccess 文件中public_html/img执行以下操作:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^img\.site\.com$ [NC]
RewriteRule ^images/(.*)$ http://site.com/files/images/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

要不就

Redirect 301 /images http://site.com/files/images
Run Code Online (Sandbox Code Playgroud)