2个类似的rewriteRule中只有1个有效

时间:2015-10-30 19:19:22

标签: .htaccess mod-rewrite url-rewriting

:: 1.)简介::

.htacces看起来像这样:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^((?!index\.php)[^/]+)/?$ index.php?page=$1 [L]
RewriteRule ^((?!index\.php)[^/]+)/([A-Za-z0-9]+)/([0-9]+)/([0-9]+)/?$ index.php?page=$1&keyword=$2&zip=$3&range=$4 [L]
RewriteRule ^((?!index\.php)[^/]+)/([A-Za-z0-9]+)/([0-9]+)/([0-9]+)/([A-Za-z0-9]+)/?$ index.php?page=$1&keyword=$2&zip=$3&range=$4&action=$5 [L]

#ONLY 1 OF THIS RULES WORK -> ASK STACKOVERFLOW!
RewriteRule ^((?!index\.php)[^/]+)/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?page=$1&ctitle=$2&cid=$3 [L]
RewriteRule ^((?!index\.php)[^/]+)/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?page=$1&ptitle=$2&pid=$3 [L]

请查看最后两条规则:

RewriteRule ^((?!index\.php)[^/]+)/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?page=$1&ctitle=$2&cid=$3 [L]
RewriteRule ^((?!index\.php)[^/]+)/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?page=$1&ptitle=$2&pid=$3 [L]

这些规则将执行以下操作:

重写第1页 [本地或实时环境网址] / index.php?page = page1 & keyword = test& zip = 12345& range = 50

对此: [本地或实时环境网址] / 第1页 / test / 12345/50

或第2页 [本地或实时网址] /index.php?page= 第2页& keyword = test& zip = 12345& range = 50

对此: [本地或在线直播] / 第2页 / test / 12345/50

:: 2.)问题::

两个规则不能同时工作,因为预期的url参数数量相同,但参数名称不一样

:: 3.)可能的解决方案::

我可以为两个页面使用通用参数名称,因此两个页面只使用相同的参数,但我不确定在我进一步开发项目时是否曾经需要不同的参数名称。

:: 4.)所需的解决方案::

我想在每个重写规则中做出决定。 indikator可以是页面名称。我尝试了一些解决方案,但它们无法正常工作。 在哪里以及如何插入页面名称,例如'page1'和'page2',以便我可以使用两个非常相似的reWriteRules?

修改

注意:巴拿马杰克在这里问了正确的问题。在这种情况下,Pagename不是动态的。

2 个答案:

答案 0 :(得分:1)

您的规则可以像这样简单,因为页面不是动态的。可能是最简单的例子。

RewriteRule ^page1/([^/]+)/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?page=$1&ctitle=$2&cid=$3 [L]
RewriteRule ^page2/([^/]+)/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?page=$1&ptitle=$2&pid=$3 [L]

答案 1 :(得分:0)

这就是我现在的工作方式:

RewriteRule ^page1/([A-Za-z0-9]+)/([0-9]+)/?$ page1&ctitle=$1&cid=$2 [L]
RewriteRule ^page2/([A-Za-z0-9]+)/([0-9]+)/?$ page2&ptitle=$1&pid=$2 [L]

有任何改进建议吗?