.htaccess - 根据 URL slug 检查是不是存在多个文件并相应地重写?

Posted

技术标签:

【中文标题】.htaccess - 根据 URL slug 检查是不是存在多个文件并相应地重写?【英文标题】:.htaccess - Check if multiple files exists based on URL slug and rewrite accordingly?.htaccess - 根据 URL slug 检查是否存在多个文件并相应地重写? 【发布时间】:2014-02-01 09:56:57 【问题描述】:

来自以下网址:

localhost/videos/the-best-games

还有一个名为“categories”的目录,其中包含与 .htaccess 相同的目录中的各种文件:

./games.txt
./sports.txt
./football.txt

如何使用 url slug "the-best-games" 来检查 "categories" 中的这些文件名

./categories/the.txt
./categories/best.txt
./categories/games.txt

并使用第一个匹配的文件名重写 url:

localhost/games/videos/the-best-games

localhost/games/videos/the-best

可能基于这些先前的问题:

htaccess: Check if a file exists based on variables Using altered RewriteCond to check if file exists in multiple locations

【问题讨论】:

URL 可以是无限长的,例如:http://localhost/videos/the-best-games-on-earth,并且您还想检查on.phpearth.php 吗? 这很好,但我们可以慢慢开始。 【参考方案1】:

这应该适合你:

RewriteCond /path/to/categories/$1.txt -f
RewriteRule /videos/the-best-(.*)$ /$1/videos/the-best-$1 [R,L]

它会解析规则并寻找最佳的(无论如何),获取该值并检查文件系统中位于您的类别的绝对路径的文件。然后它将进行重写。 如果要从重写 URL 的末尾删除类别:

RewriteCond /path/to/categories/$1.txt -f
RewriteRule /videos/the-best-(.*)$ /$1/videos/the-best [R,L]

【讨论】:

谢谢,这是一个好的开始,但是如何检查.txt 和 best.txt 是否存在?

以上是关于.htaccess - 根据 URL slug 检查是不是存在多个文件并相应地重写?的主要内容,如果未能解决你的问题,请参考以下文章

使用 htaccess 屏蔽/更改 url - wordpress slug

.htaccess 多语言(slug URL/友好 URL)[关闭]

.htaccess 使用锚标记附加 URL Slugs

URL slug 的问题。

htaccess 301 重定向问题

.htaccess 重写友好的 URL