【问题标题】:files inside root directory not accessible mod_rewrite PHP根目录中的文件无法访问 mod_rewrite PHP
【发布时间】:2012-01-02 16:38:53
【问题描述】:

文件结构如下所示

  • 根/x
  • root/x/y.php
  • root/index.php

.ht访问代码

RewriteRule (.*) /x/$1 [L]

htaccess 文件的作用是从 url 中删除文件夹名称 (x),以便访问 y.php = http://localhost/y.php 而不是 http://localhost/x/y.php 。这可行,但我现在的问题是 index.php 显示如下:

Index of /x

Parent Directory
y.php

我无法访问 index.php。我相信 x 成为根文件夹。 感谢您的帮助!

【问题讨论】:

  • 你确定index.php 显示的是,不是你的服务器吗?
  • 服务器显示。在 index.php 中,我回显了一个 Hello world,但它没有显示。我尝试在 x 内创建一个 index.php,并使用相同的 echo "Hello world";它显示了!所以我相信 x 文件夹成为了根目录。
  • 但这不是您想要的吗?我的意思是如果不是这样,重写规则还有什么写的?
  • 我唯一想要的是删除 url 中的文件夹名称

标签: php apache .htaccess mod-rewrite


【解决方案1】:

首先,您不应该在公共服务器上允许这样的索引显示...

Options -Indexes

为了解决您的问题,您可能应该在重写规则之前添加以下条件,以便该规则不适用于磁盘上实际存在的任何文件或目录:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

这不会解决您遇到的问题,因为 .htaccess 正在重定向到不存在的 /x/index.php 文件...这就是它显示索引列表的原因/x 目录

【讨论】:

  • 我现在有一个现有的 /x/index.php 并成为默认文件而不是 root/index.php
  • 对……这就是我回答的最后一句话的意思。
  • 我有这个 mod_rewrite 东西的原因是删除 URL 中的文件夹名称。我做错了,因此改变了默认文件夹/文件。
猜你喜欢
  • 2021-05-12
  • 2011-03-05
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 2017-01-24
相关资源
最近更新 更多