gpt4 book ai didi

Apache mod_rewrite 用于除 root 之外的所有内容

转载 作者:行者123 更新时间:2023-12-04 14:18:51 24 4
gpt4 key购买 nike

嗨,我正在尝试编写一个 mod_rewrite 规则来重定向除根文件夹之外的所有内容。
例如,www.example.com 应该加载 index.html 文件
对于其他一切,例如www.example.com/tag,/tag 应该传递给子目录中的脚本

现在我有

RewriteCond %{REQUEST_URI} !^/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) app/webroot/$1 [L]

这很好地加载了 index.html 但/tag 没有传递给 webroot。我收到 404 错误。

谢谢

最佳答案

这个条件是问题:

RewriteCond %{REQUEST_URI} !^/

您所说的以 '/' 开头的任何内容都不会被重写,并且所有内容都以 '/' 开头。您需要使用 $在末尾:
RewriteCond %{REQUEST_URI} !^/$

不过,我不确定您是否需要该规则,因为如果 index.html 存在,其他两个规则将自动处理。只需使用这些来重写任何物理上不存在的东西:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ app/webroot/$1 [L,QSA]

而且您可以在您的应用程序中处理 404 错误,因为无论如何您都必须处理子目录。

关于Apache mod_rewrite 用于除 root 之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5437375/

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