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


Reroute any subdirectory to script

我正试图在Perl web项目中设置简单的url路由,而不必为此目的包含一个框架。我相信这可以通过一个。htaccess来完成。

该计划是为使用example.com/anysubdirectory/...的服务器的任何请求路由到perl/php脚本,该脚本将解析/anysubdirectory/...中包含的任何内容及其后面的参数,然后根据该信息确定将用户发送到哪里。

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

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

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

我想我已经在root .htaccess中回答了我自己的问题:

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

这似乎与我的初步测试工作。

我相信它是这样工作的:

  • 如果请求的子目录没有作为文件找到
  • 如果所请求的子目录没有作为目录找到
  • 将其与原始url中的任何剩余参数一起重定向到router.pl脚本。

编辑:上面没有完全工作,这仍然将服务器上没有找到的任何文件重定向到router.pl脚本。不是真正的功能,我正在寻找,我希望这只发生,如果它是一个子目录,而不是一个无效的文件

不确定我想要任何猜测文件名的机器人定期绑定我的脚本。

如果以上任何一个不准确,请纠正这个回答。