我如何使用Apache RewriteRules + PHP来确定要显示哪个页面?

我想在我的.htaccess上做一个可扩展的RewriteRule,我使用斜杠前的每个单词作为参数。

例如: http://localhost/mysite/param1/param2/param3/.../param20

我正在使用这个代码(但是如果我想要6或7个参数,它会太长):

 Options +FollowSymLinks RewriteEngine on DirectoryIndex web.php?param1=inicio RewriteRule ^([a-zA-Z0-9_-]+)$ web.php?param1=$1 RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ web.php?param1=$1&param2=$2 

下一个rewriteRules会更长一些^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$/([a-zA-Z0-9_-]+)$/([a-zA-Z0-9_-]+)$/([a-zA-Z0-9_-]+)$ web.php?param1=$1&param2=$2&param3=$3&param4=$4&param5=$5

我将每个参数作为一个个体variables发送给php,并且我使用第一个参数来决定哪个页面必须显示在web.php上。 有什么办法可以缩短吗? 我不知道如何优化它。 我甚至不知道我是否正确。 你将如何做到这一点? 也许使用PHP? 谢谢。

你不应该在RewriteRule中进行参数parsing,除非你有一个固定数量的参数(比如MediaWiki)。

而是将每个请求(或其中的一部分(例如,基于URL的第一个字符)redirect到一个PHP脚本,该脚本将自动parsingURL。 然后,它会根据分析的内容显示正确的页面。