php - htaccess 在用户不知情的情况下重定向

标签 php apache .htaccess

我们通过相同的代码运行多个域,我们希望将它们的图像保存在各自的文件夹中。这就是我们正在做的事情。

/images/www.domain1.com/logo.jpg /images/www.domain2.com/logo.jpg

现在,我想知道的是,在 htaccess 中我们是否可以在用户不怀疑的情况下重写 url。这就是我想要的

<img src="/images/logo.jpg" />

应该在内部通过 htaccess 成为

RewriteRule ^images/(.*)$ /images/{HTTP_HOST}/$1 [L,R=301]

但我的问题是,

  1. 上面的重定向不断循环
  2. 我能否在用户或管理员不怀疑的情况下实现 img 效果?

此致

古兰经

最佳答案

删除 R=301 以简单地重写而不是重定向:

RewriteRule ^images/(.*)$ /images/{HTTP_HOST}/$1 [L]

它不断循环的原因是 301 重定向导致为 url images/www.domain1.com/logo.jpg 创建一个新请求。该 URL 也与您的 ^images/(.*)$ 规则匹配,因此它会再次重定向,无限次。

如果你真的想做一个 301 重定向(我怀疑你不想,但如果你做了),你可以通过添加一些重写条件来解决无限循环问题,如果域已经包含则跳过重定向:

RewriteCond {REQUEST_URI} !^images/www.domain1.com/(.*)$
RewriteCond {REQUEST_URI} !^images/www.domain2.com/(.*)$
RewriteRule ^images/(.*)$ /images/{HTTP_HOST}/$1 [L,R=301]

关于php - htaccess 在用户不知情的情况下重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9947608/

相关文章:

php - 为什么 DirectoryIndex index.php index.html 不工作?

.htaccess - 如何在没有重定向循环的情况下使用 htaccess 转发到 https

.htaccess - easyphp 和 .htaccess

php - 依赖 "mysql_insert_id"

php - 访问被禁止怎么解决! xampp 服务器的 codeigniter 错误

php - 通过ajax上传文件最终出现在php ://input中

php - SQLSTATE[HY000] [2003] 无法连接到 MySQL 服务器

php - Laravel 5.3 是否可以安全地从 Laravel 项目中删除/删除存储文件夹?

php - PHPDoc 的冗长是否比它的值(value)更麻烦?

python - 我可以通过一个 django 安装托管多个站点吗