5

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

旧网址:

http://img.site.com/images/2013/03/abc.jpg

新网址:

http://site.com/files/images/2013/03/abc.jpg

问题在于我有很多来自其他网站和搜索引擎的图片链接,这些网站和搜索引擎仍在使用旧 URL。

旧子域的问题在于它的目录 ( 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>

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

Not Found

The requested URL /files/images/2013/10/15c100d1da3216850d6cceb4ce57eaab6d26fc92.jpg was not found on this server.
img.site.com

我的错误日志报告:

[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
4

4 回答 4

1

您修改后的 .htaccess 看起来像(假设它放置在文档根目录/

<IfModule mod_rewrite.c>
    RewriteEngine On

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

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

RewriteCond一个检查域,如果它是旧域,则将img.site.com所有请求重定向/images到新 URL。

于 2013-10-20T20:45:33.730 回答
1

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

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

要不就

Redirect 301 /images http://site.com/files/images
于 2013-10-17T03:26:43.430 回答
1

好吧,我可以提供一个间接解决方案,您必须在页眉或页脚文件中进行一些更改,为此,请在 .htaccess 中键入以下行,

HeaderName /path/.../header.html (if .html) or if .php header then,

AddType text/html .php
Addhandler application/x-httpd-php .php
HeaderName /path/.../header.php

或者只是 ReadmeName /path/.../footer.html 作为页脚,然后在该文件中使用 copy+unlink (用于移动文件但速度较慢),(或者精确地 rename() 将是一个更好的选择),在该文件中完成您的任务。

于 2013-10-25T22:24:41.400 回答
1

好的试试这个:


重写引擎开启

RewriteCond %{HTTP_HOST} ^img\.your-domain\.com$ [NC]
重写规则 ^images/(.*)$ /files/images/$1 [L,R=301]


于 2013-10-20T14:57:29.753 回答