mod_rewrite修复错误的子域命名


mod_rewrite to fix bad subdomain naming

我的服务器上有很多不巧妙命名的文件夹。它们被称为cdn-1 cdn3 img1等。我已经收集了这些文件夹中的所有文件,并将它们放在一个称为cdn的文件夹中。现在,我不希望用户在尝试访问 cdn-3.website.com/file/img/1.jpg 的文件时获得 404。相反,有没有办法mod_rewrite这个文件夹,这样即使用户尝试访问文件,比如说,cdn-7382910731293.website.com/file/1.jpeg,它仍然可以工作?这可能很牵强,但我以前见过这样做。我为这样的解决方案找到的唯一有效代码是单个文件,而不是文件夹。

编辑:这是我到目前为止尝试过的。它只是行不通。它有什么问题?

RewriteRule ^cdn([^/]*).1$ http://cdn.website.com/$1 [L]

最简单的方法是使用 .htaccess 将所有 404 页面重定向到单个 PHP 页面,这反过来会检查您的新 cdn 文件夹中是否存在这样的文件/图像,并对其进行服务器或显示有效的 404 页面。

在提供图像等时不要忘记标题;-)

也许尝试使子域都指向同一个位置(cdn.website.com 指向的任何位置),然后将以下内容粘贴在该域的htaccess中:

RewriteCond %{HTTP_HOST} ^(cdn-1|cdn1|img1|etc)'.website'.com
RewriteRule (.*) http://cdn.website.com/$1 [R=301,L]

这应该无缝工作,只要文件在同一个地方。也就是说,只有主机名不同,主机名后面的文件路径也不不同。我认为RewriteCond是一个正则表达式,所以你应该能够编写它来匹配你需要的任何内容。

我已经成功地使用此方法将旧域重定向到新域,并将example.com重定向到www.example.com