当用户使用不存在的 url 时,我需要使用 .htaccess 从特定目录加载索引文件。这是我的文件夹结构:root/realdirectory/virtualdirectory/virtualproducturl我的索引文件位于 root/realdirectory还有一些使任务更加复杂的东西:如果用户访问,则必须加载 root/realdirectory/index.php:-root/realdirectory/virtualdirectory/virtualproducturl or
-root/realdirectory/virtualdirectory/'virtualdirectory' 是我的产品类别,当用户只访问类别 url 时,我想向他展示一些来自 root/realdirectory/index.php 的信息提前谢谢
1 回答
动漫人物
TA贡献1815条经验 获得超10个赞
听起来很简单:当一个请求没有被解析到一个现有的文件或文件夹时,然后在内部将它重写为一个“索引文档”:
RewriteEngine on RewriteCond %{REQUEST_URI} !-f RewriteCond %{REQUEST_URI} !-d RewriteRule ^ /index.php [END]
如果您使用上述规则收到内部服务器错误(http 状态 500),那么您可能操作的是非常旧版本的 apache http 服务器。在这种情况下,您将在您的 http 服务器错误日志文件中看到一个不受支持的[END]
标志的明确提示。您可以尝试升级或使用旧[L]
标志,在这种情况下它可能会工作相同,尽管这在一定程度上取决于您的设置。
此实现同样适用于 http 服务器主机配置或分布式配置文件(“.htaccess”文件)。显然重写模块需要在http服务器内部加载并在http主机中启用。如果您使用分布式配置文件,您需要注意它的解释在主机配置中完全启用并且它位于主机的文件夹中DOCUMENT_ROOT
。
还有一条一般性的评论:您应该始终更喜欢将此类规则放在 http 服务器主机配置中,而不是使用分布式配置文件(“.htaccess”)。那些分布式配置文件增加了复杂性,通常是意外行为的原因,难以调试并且它们确实减慢了 http 服务器的速度。它们仅在您无法访问真正的 http 服务器主机配置(阅读:非常便宜的服务提供商)或坚持编写自己的规则(这是一个明显的安全噩梦)的应用程序的情况下作为最后的选择提供。
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消