将任何子目录重新路由到脚本

时间:2016-09-28 16:45:23

标签: php apache perl .htaccess

我正在尝试在Perl Web项目中设置简单的URL路由,而不必仅为此目的包含框架。我相信这可以用.htaccess来完成。

该计划适用于使用example.com/anysubdirectory/...将服务器发送到perl / php脚本的任何请求,该脚本将解析/anysubdirectory/...中包含的任何内容及其后面的参数,然后确定将其发送到何处用户基于该信息。

如果请求没有任何子目录的example.com,我还需要保持搜索索引页面的默认行为。

由于/anysubdirectory/将是动态的,我无法预定义/123/ -> option 1/abc/ -> option 2

除了典型的www和base重写之外,我对htaccess并不过分熟悉。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我相信我在根.htaccess中使用以下内容回答了我自己的问题:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ router.pl?action=$1 [L,NC,QSA]

这似乎与我的初步测试有关。

我相信这就是它的工作方式:

  • 如果找不到请求的子目录作为文件
  • 如果找不到所请求的子目录
  • 将其重定向到router.pl脚本以及原始网址中的所有剩余参数。

编辑:以上操作无法完成,这仍然会将服务器上找不到的任何文件重定向到router.pl脚本。不是我正在寻找的功能,我希望只有当它是一个子目录而不是无效的文件时才会发生这种情况

我不确定我是否希望任何猜测文件名的机器人定期查看我的脚本。

如果上述任何一项不准确,请更正此回复。