删除文件名和扩展名,只显示文件夹名称

时间:2013-04-19 11:47:33

标签: php .htaccess hide

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

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

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

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

我发现像重写.htaccess文件中的规则,但我是php的新手,所以我不知道怎么做。任何人都可以给我建议或提供一些关于此的教程。

感谢。

2 个答案:

答案 0 :(得分:1)

要删除斜杠,必须先禁用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]

如果请求的URL是目录,并且此目录中有RewriteCond,则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]

答案 1 :(得分:0)

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