我正试图在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脚本。不是真正的功能,我正在寻找,我希望这只发生,如果它是一个子目录,而不是一个无效的文件
不确定我想要任何猜测文件名的机器人定期绑定我的脚本。
如果以上任何一个不准确,请纠正这个回答。