Php 如何使用htaccess从URL隐藏文件夹?

Php 如何使用htaccess从URL隐藏文件夹?,php,.htaccess,Php,.htaccess,我需要从url www.domain.com/modules/demo/add.php隐藏modules文件夹 我已经编写了以下htaccess代码 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / RewriteRule ^modules/(.*)$ /$1 [L,NC,R] 使用相同的.htaccess代码后,我发现404错误。你可以查看演示@那么你应该从另一个

我需要从url www.domain.com/modules/demo/add.php隐藏modules文件夹 我已经编写了以下htaccess代码

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^modules/(.*)$ /$1 [L,NC,R]

使用相同的.htaccess代码后,我发现404错误。你可以查看演示@

那么你应该从另一个角度来考虑它。仅链接此文件而不链接模块目录。在.htaccess中,您只需执行以下操作:

RewriteEngine on
RewriteBase /

RewriteRule ^demo/(.*)$ /modules/demo/$1 [L,QSA]

.htaccess将位于/目录中。

隐藏是什么意思?您的规则将modules/xxxx重定向到/xxxx,因此当您访问www.domain.com/modules/demo/add.php时,它会尝试访问www.domain.com/demo/add.php。这就是为什么会出现404错误的原因如果可能的话,请尝试将此类保护和重定向规则放在虚拟主机的主服务器配置中,而不是放在“.htaccess”样式的文件中。这些文件大大降低了整个网站的运行速度,容易出错,而且很难调试。那么,有没有任何解决方案可以像wordpress那样隐藏文件夹?我不想让用户知道文件存储在模块folderI中,我假设您现在已经了解了mod_rewrite的一般工作原理。如果没有,先查一下。如果您已经这样做了,下面的解释是:您将文件链接为/demo/whatever/file,此规则将重写为/demo/modules/whatever/file。在地址栏中仍然显示/demo/whatever/file。