如何使用 .htaccess 将查询变量伪装成“虚拟目录”?

如何使用 .htaccess 将查询变量伪装成“虚拟目录”?

我该如何让https://example.com/channels/[channel_name]/[video_id]出现在地址栏中,但让我的 PHP 脚本看到https://example.com/channels?channel=[channel_name]&v=[video_id]?鉴于[channel_name][video_id]不是真正的目录。

答案1

我可以在这里找到我所寻找的一个可行的示例:

https://www.taniarascia.com/rewrite-query-string-to-path-with-htaccess/

有问题的代码如下所示:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?users/(.*?)/?$ /users.php?name=$1 [L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /users\.php\?name=([^\&\ ]+)
RewriteRule ^/?users\.php$ /users/%1? [L,R=301]

在哪里http://example.com/users/tania输出为http://example.com/users.php?name=tania,这正是我所寻找的行为。

我理解前四行的作用。有人能解释一下最后两行是干什么的吗?我已经在https://htaccess.madewithlove.be/,并且删除最后两行似乎对输出没有影响。

相关内容