使用位于子文件夹中的 .htaccess 创建友好 URL

Creating friendly urls using .htaccess that is located in a subfolder

提问人:hobbsie 提问时间:6/2/2023 最后编辑:hobbsie 更新时间:6/7/2023 访问量:38

问:

我有一个这样的文件夹结构

root/folder1/folder2/2023/

如果我将以下文件放在我的根文件夹中,这工作正常.htaccess

RewriteEngine On
RewriteRule ^(\d{4})/foo?$ folder1/folder2/$1/foo.php [NC,L]

https://example.com/folder1/folder2/2023/foo.php原始网址

https://example.com/2023/foo新网址

子文件夹2

如果我把我的文件放进去,我如何获得上面相同的 URL.htaccessfolder2

如果我使用以下内容,但这会起作用,但我不想在我的 URL 中RewriteRule/folder1/folder2/https://example.com/folder1/folder2/2023/foo

RewriteRule ^(\d{4})/foo$ $1/foo.php [NC,L]

这可能吗,还是我应该将我的保留在我的根目录中。.htaccess

正则表达式 apache .htaccess mod-rewrite

评论

2赞 CBroe 6/2/2023
“这可能吗” - 不。如果您将 .htaccess 放入 ,那么当您请求时,它首先不会被读取。Web 服务器没有理由根据请求的 URL 进行查找。/folder1/folder2//2023/foo/folder1/folder2/
0赞 MrWhite 6/2/2023
@CBroe 不妨把它当作一个答案。(或关闭/删除问题。
0赞 MrWhite 6/2/2023
在这里快速阅读手册会很方便......“在 .htaccess 文件中找到的配置指令将应用于找到 .htaccess 文件的目录及其所有子目录。”httpd.apache.org/docs/current/howto/htaccess.html
0赞 MrWhite 6/2/2023
^(\d{4})/foo?$- 为什么 ??
0赞 hobbsie 6/3/2023
这是一个错别字,我现在已经删除了它

答:

0赞 Kamikaza 6/7/2023 #1

在最后一个文件夹中,把这个

RewriteRule ^([a-zA-Z0-9-/]+)$ foo.php?id=$1

它至少对我有用