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



我想这一定是一个常见的场景,但我很难很好地描述它或找到一个有效的答案!

从本质上讲,我想制作数百个URLS,这些URLS包括唯一的引用代码,但很容易以example.com/aabbcc的形式键入,它们将被截获,并全部传递到一个PHP脚本中,用于验证代码,该脚本位于类似example.com/script.php的位置。我需要URL的子目录部分(在本例中为aabbcc(成为该脚本的GET参数,因此像上面这样的URL将被发送到example.com/script.php?id=aabbcc,同时向用户隐藏这个更复杂的URL。

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

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

如果您的"唯一参考码";由6个小写字母组成,在您的示例中,您可以使用mod_rewrite:在根.htaccess文件中执行以下操作

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

如果你不需要直接访问根目录下的任何子目录,这些子目录恰好也与";唯一参考代码";则可以删除前面的条件(RewriteCond指令(。有了条件,您自然无法访问任何";唯一访问码";恰好也与子目录的名称相匹配。

$0是对RewriteRule模式(第一个参数(匹配的整个URL路径的反向引用。


参考

  • Apache mod重写文档-内容
  • Apache mod_rewrite简介
  • Apache mod_rewrite参考
    • RewriteRule指令
    • RewriteCond指令

最新更新