如何显示文件夹名称而不是文件名?
例如, 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的新手,所以我不知道怎么做。任何人都可以给我建议或提供一些关于此的教程。
感谢。
答案 0 :(得分:1)
要删除斜杠,必须先禁用DirectorySlash
DirectorySlash Off
DirectoryIndex disabled
可以使用R=404
状态代码
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,使您的结构更清洁。