我正在尝试在我的 .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¶m2=$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¶m2=$2¶m3=$3¶m4=$4¶m5=$5
我将每个参数作为单独的变量发送给 php,并使用第一个参数来决定哪个页面必须显示在 web.php 上。有什么方法可以缩短它吗?我不知道如何优化它。我甚至不知道我的方法是否正确。你会怎么做?也许使用 php?谢谢。
答案1
你不应该在 RewriteRule 中进行参数解析,除非你有一个固定数量的参数(例如 MediaWiki做)。
相反,将每个请求(或基于 URL 前几个字符的请求子集)重定向到 PHP 脚本,该脚本将自行解析 URL。然后,它将根据解析的内容显示正确的页面。