gpt4 book ai didi

.htaccess - 使用mod_rewrite从一个目录重定向到另一个目录

转载 作者:行者123 更新时间:2023-12-04 13:28:25 25 4
gpt4 key购买 nike

以下是我的目录结构:

admin\
controls\
images\
media\
lib\
models\
views\
index.php
.htaccess

以下是我的.htaccess
RewriteEngine On 
RewriteRule /admin/images/(.*) /images/$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php

我希望/admin/images中的所有内容都等于根目录中的/images。例如: http://www.example.com/admin/images/example.png将与 http://www.example.com/images/example.png相同

.htaccess的问题是:
它转到index.php而不是将admin/images镜像到images/

解决方案
RewriteEngine On 
RewriteRule /admin/images/(.*) /images/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php

最佳答案

您需要指定图像重写规则是该行中的最后一个规则,以防止进一步重写。为此,您只需在图像重写规则的末尾指定[L]

RewriteEngine On 
RewriteRule /admin/images/(.*) /images/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php

编辑:这是问题发生的原因的说明(摘自评论部分,以提供澄清)。

您会看到,无论执行多少重写阶段,原始 %{REQUEST_FILENAME}都将永远不会改变。这意味着当达到第二个规则时,该变量实际上仍将指向现有图像(位于 /admin/images/中),而不是指向正在重写且不存在的图像( /images/)。这就是为什么将始终应用第二条规则,以及为什么示例中的两条条件行几乎始终是重写期间要使用的第一条条件行的原因。

关于.htaccess - 使用mod_rewrite从一个目录重定向到另一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11273608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com