名为相同PHP的文件和目录

名为相同PHP的文件和目录,php,regex,.htaccess,mod-rewrite,Php,Regex,.htaccess,Mod Rewrite,我目前在我的网站上有这两篇文章 localhost/FTS/papers-这是一个php文件 localhost/FTS/papers/-这是一个目录 我想做的是使其在加载时: localhost/FTS/papers-或- localhost/FTS/papers/-或- localhost/FTS/papers.php 我要他们都去文件档案 现在,它正在访问目录而不是文件,这不是我想要的。我认为,当您与papers目录或papers文档交谈时,PHP(和我一样)会感到困惑 如果可能的话,最好

我目前在我的网站上有这两篇文章

localhost/FTS/papers
-这是一个php文件
localhost/FTS/papers/
-这是一个目录

我想做的是使其在加载时:

localhost/FTS/papers
-或-
localhost/FTS/papers/
-或-
localhost/FTS/papers.php

我要他们都去文件档案


现在,它正在访问目录而不是文件,这不是我想要的。

我认为,当您与papers目录或papers文档交谈时,PHP(和我一样)会感到困惑

如果可能的话,最好的方法是将papers文档的名称更改为papers\u doc,以确保您位于正确的位置。(这很容易出错)

PHP的is_dir功能可以轻松检查您是否正在与文件或目录交谈:

var_dump(is_dir('a_file.txt'));
var_dump(is_dir('bogus_dir/abc'));
或使用is_文件:

var_dump(is_file('a_file.txt'));
var_dump(is_file('bogus_dir/abc'));

将此规则放在
文档\u ROOT/.htaccess
文件中:

RewriteEngine On
RewriteBase /FTS/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/FTS/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

您可以使用以下规则将htaccess文件放置在
papers
目录中:

RewriteEngine On
RewriteRule ^$ /FTS/papers.php [L]

并允许mod_dir将
/FTS/papers
重定向到
/FTS/papers/

我正在将这段精确的代码放入我的/var/www/FTS/.htaccess文件中,但它对localhost/FTS/papers不起作用……这似乎起到了作用,但仍然存在一些小问题。看起来没有一个css通过,它只是以简单的html显示网站。它还不断将链接改为“papers/”而不仅仅是“papers”。对于css/js,最好在css、js、图像文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以
http://
或斜杠
/
开头,否则您可以尝试将其添加到页面的标题中:
。此外,如果
/papers/
是真实目录,则后面的斜杠由
mod_dir
模块添加,而不是根据上述规则添加。最好不要从目录中删除尾部斜杠。这是我目前拥有的css绝对路径,但它仍然不能工作。有什么建议吗?这很有效…有点。它不再显示我拥有的任何图形,它仍然显示localhost/FTS/papers/链接,当我希望它从末尾去掉尾随斜杠,只显示papers.php时page@FreeTheStudents你的图片是相对关联的吗?您需要将它们设置为绝对链接,或者在页面标题中添加相对基(例如
)。至于让
/FTS/papers
在不重定向的情况下加载php文件,则需要关闭mod_dir,这样即使您有索引文件,任何人都可以查看您的目录内容,因此,这意味着关闭自动索引:
Options-index
和关闭mod_dir
directorysash off
link rel=“stylesheet”href=“/var/www/FTS/screen.css”>这是我目前拥有的css绝对路径,但它仍然不能工作。有什么建议吗?@FreeTheStudents您希望它与URL路径(而不是文件路径)绝对相关。例如,如果css文件可以在
http://localhost/FTS/screen.css
,则需要将其设置为
/FTS/screen.css