我已经搜索了很多"如何从url中删除子目录",大多数答案都很微妙,因此无法应用于我的场景。
这是我能得到的最接近简洁答案:
删除子目录和文件扩展名
哪个有问题:
如果我有site.com/page/about.php
如何删除子目录和文件扩展名?
示例:site.com/about
并提供了答案:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^about(/?)$ /page/about.php [NC,L]
我的场景和期望的结果非常相似,我把所有的"页面"都放在一个包含文件夹中,例如:
site.com/includes/home.php
site.com/includes/about.php
site.com/includes/page3.php
我希望这些文件(以及包含文件夹中存在的任何文件)可以在URL上访问,比如:
site.com/home
site.com/about
site.com/page3
我认为这就是解决方案:
RewriteEngine On
# Remove sub directory from URL
RewriteRule ^([^.]+)/?$ includes/$1.php
# Remove file extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]