Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mod_重写以修复错误的子域命名_Php_Mod Rewrite_Directory_Cdn_Subdirectory - Fatal编程技术网

Php mod_重写以修复错误的子域命名

Php mod_重写以修复错误的子域命名,php,mod-rewrite,directory,cdn,subdirectory,Php,Mod Rewrite,Directory,Cdn,Subdirectory,我的服务器上有许多命名不清的文件夹。它们被称为cdn-1、cdn3、img1等。我收集了这些文件夹中的所有文件,并将它们放在一个名为cdn的文件夹中。现在,我不希望用户在访问cdn-3.website.com/file/img/1.jpg上的文件时得到404。相反,是否有办法修改或重写此文件夹,以便即使用户尝试访问位于(例如)cdn-7382910731293.website.com/file/1.jpeg的文件,它仍能工作?这可能有些牵强,但我以前见过这样做。对于这样的解决方案,我找到的唯一有

我的服务器上有许多命名不清的文件夹。它们被称为cdn-1、cdn3、img1等。我收集了这些文件夹中的所有文件,并将它们放在一个名为cdn的文件夹中。现在,我不希望用户在访问cdn-3.website.com/file/img/1.jpg上的文件时得到404。相反,是否有办法修改或重写此文件夹,以便即使用户尝试访问位于(例如)cdn-7382910731293.website.com/file/1.jpeg的文件,它仍能工作?这可能有些牵强,但我以前见过这样做。对于这样的解决方案,我找到的唯一有效代码是针对单个文件,而不是文件夹

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


重写规则^cdn([^/]*).1$http://cdn.website.com/$1[L]

最简单的方法是使用.htaccess,它将检查新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

谢谢,但我不想重定向。嗯,那么你想做什么?假设我想将用户链接到位于cdn.website.com/movie.mp4的文件,但是我想提供一个更好的链接,所以我会做一些类似cdn-video.website.com/movie.mp4或类似的事情。这就是我想做的,所以你想做相反的事?我可以问一下为什么吗?为文件设置一个主机名不是更好吗?不管怎样,我都会觉得干净多了。。。如果这些东西指向同一个地方,那么使用单独的子域有什么好处呢?但是为什么
cdn video.example.com/movie.mp4
cdn.example.com/movie.mp4
更有用或信息更丰富呢?对我来说,重要的是主域名和文件名。文件名以mp4结尾,所以很明显这是一个移动剪辑。如果不是的话,那么看它的人可能不会对URL有太多的想法:看我的编辑。这就是我尝试过的。