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

如何使用 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

我将每个参数作为单独的变量发送给 php,并使用第一个参数来决定哪个页面必须显示在 web.php 上。有什么方法可以缩短它吗?我不知道如何优化它。我甚至不知道我的方法是否正确。你会怎么做?也许使用 php?谢谢。

答案1

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

相反,将每个请求(或基于 URL 前几个字符的请求子集)重定向到 PHP 脚本,该脚本将自行解析 URL。然后,它将根据解析的内容显示正确的页面。

相关内容