我如何维护一个网站,其中一个文件夹和文件有相同的名称,但也隐藏了该文件的扩展名?



我正试图通过使用。htaccess来改善我的url结构。我有一个名为foo.php的文件和一个名为/foo的文件夹。我希望能够访问example.com/foo并显示example.com/foo.php。我还希望能够访问example.com/foo/bar并显示example.com/foo/bar.php。最后,我想从example.com/foo/重定向到example.com/foo。有人知道怎么做吗?

这是我的代码:

RewriteEngine On
DirectorySlash Off
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [NC,L]

我能够删除.php扩展名,因为我无法从文件夹重定向到文件。我也尝试了下面的解决方案,但它们都没有达到预期的效果。

htaccess -重写目录同名的文件

。Htaccess,重写与目录

同名的文件名。Htaccess,正确重写同名目录和文件

我找到了一个解决这个问题的变通方法。为了从文件名中删除扩展名,我在.htaccess文件中使用了以下代码:

RewriteEngine On
DirectorySlash Off
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

上面的代码允许我进入example.com/foo并显示example.com/foo.php。为了从example.com/foo/重定向到example.com/foo,我在/foo目录中创建了一个index.php文件。我将以下PHP代码添加到文件

<?php 
$page = str_replace('/index.php', '', $_SERVER['PHP_SELF']);
header("Location: $page");
?>

这将从目录重定向到文件。希望对你有帮助。

相关内容

最新更新