我想在我的.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
我将每个参数作为一个个体variables发送给php,并且我使用第一个参数来决定哪个页面必须显示在web.php上。 有什么办法可以缩短吗? 我不知道如何优化它。 我甚至不知道我是否正确。 你将如何做到这一点? 也许使用PHP? 谢谢。
你不应该在RewriteRule中进行参数parsing,除非你有一个固定数量的参数(比如MediaWiki)。
而是将每个请求(或其中的一部分(例如,基于URL的第一个字符)redirect到一个PHP脚本,该脚本将自动parsingURL。 然后,它会根据分析的内容显示正确的页面。