0

如何显示文件夹名称而不是文件名?

例如,www.example.com/home/index.php -> www.example.com/home

我知道当我浏览 www.example.com/home 时会得到结果,但这不是我想要的,因为它会在文件夹名称后面添加 /(例如 www.example.com/home/)。

我想要的是没有 / 后面的文件夹,当用户浏览 www.example.com/home/index.php 时,页面会将用户重定向到未找到的页面。我这样做的目的是隐藏我使用的语言并使链接更具可读性和记忆力。

我在 .htaccess 文件中发现了类似重写规则的东西,但我是 php 新手,所以我不知道如何制作它。任何人都可以给我建议或提供一些关于此的教程。

谢谢。

4

2 回答 2

2

要删除斜线,您必须先禁用DirectorySlash

DirectorySlash Off
DirectoryIndex disabled

可以用R=404状态码回答直接访问 PHP 文件

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule \.php$ - [R=404,L]

然后,您可以重写指向目录并包含index.php

RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^.*$ /$0/index.php [L]

RewriteCond看起来,如果请求的 URL 是一个目录,并且index.php这个目录中是否有一个。如果是这种情况,则index.php执行 。

把所有的放在一起

DirectorySlash Off
DirectoryIndex disabled

RewriteEngine on

# prevent direct access to PHP files
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule \.php$ - [R=404,L]

# rewrite requests for a directory to index.php
RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^.*$ /$0/index.php [L]
于 2013-04-19T11:59:18.573 回答
0

Htaccess 与 PHP 没有任何共同之处。htaccess 是 Apache 的配置文件,所以你需要使用 htaccess 来实现你想要的。另一方面,您的解决方案将非常肮脏。了解 MVC 和 FrontController 以使您的结构更清晰。

于 2013-04-19T12:00:27.500 回答