URL 重定向到使用子目录作为 GET 参数

URL redirect to use subdirectory as GET parameter

我想这一定是一个常见的场景,但我正在努力充分描述它或找到有效的答案!

基本上我想制作数百个 URLS,其中包含唯一的参考代码,但很容易以 example.com/aabbcc 的形式输入,这些代码将被拦截并全部传送到 PHP 用于验证该代码的脚本,位于 example.com/script.php 之类的地方。 我需要 URL 的子目录部分(在本例中为 aabbcc)成为该脚本的 GET 参数,因此像上面那样的 URL 将被发送到 example.com/script.php?id=aabbcc,而向用户隐藏这个更复杂的 URL。

我可以从其他 .htaccess 示例中看出这一定是可能的,但我找不到这样做的人。

是否有 .htaccess 解决方案?还有其他更基本的东西吗?感谢您的帮助指导我。

如果您的“唯一参考代码”由 6 个小写字母组成,如您的示例所示,那么您可以在根 .htaccess 文件中使用 mod_rewrite:

RewriteEngine

# Internally rewrite "/abcdef" to "script.php?id=abcdef"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[a-z]{6}$ script.php?id=[=10=] [L]

如果您不需要直接访问也恰好匹配“唯一参考代码”的根目录下的任何子目录,那么您可以删除前面的 条件 (RewriteCond 指令)。在 条件 就位后,您自然无法访问恰好也与子目录名称匹配的任何“唯一访问代码”。

[=13=] 是对 RewriteRule 模式 (第一个参数)匹配的整个 URL-path 的反向引用。


参考