htaccess rewriterule能做到这一点吗?

时间:2015-05-30 18:22:22

标签: php .htaccess mod-rewrite url-rewriting

基于关键字数组生成虚拟页面的php脚本正在使用template master file。这是规则:

RewriteRule ^([+a-zA-Z0-9]+)/([+a-zA-Z0-9]+)\_service.html$ /master-one.php?city=$1 [L]

我想根据secondary关键字数组添加另一个要读取的主文件。尝试复制规则,将/master-one.php更改为/master=two.php,但这会导致网页按关键字生成,但会显示master-one.php内容。

我该如何解决这个谜语?

1 个答案:

答案 0 :(得分:0)

不确定。您可以拥有多个RewriteRule。他们只需要有不同的模式,并且应按所需的优先级排序。

简单地避免使用过于通用的占位符。它可能看起来像:

RewriteRule ^(Boston|Washington|Whatever)/(\w+?)_service.html$ /one.php?c=$1 [L]
RewriteRule ^(Paris|London|Amsterdam)/(\w+?)_service.html$     /two.php?c=$1 [L]
RewriteRule ^(\w+)/(Else|And|Whatever)_service.html$        /else.php?xyz=$2 [L]

\w+?匹配字母数字字符。替代列表(X|Y|Z)是每个规则应匹配的任何关键字。

这两个规则都不能查找每个模板/主文件可以处理的关键字。因此,您必须手动制作备用列表。 ([RewriteMap]有自动化,但如果没有任何进一步的细节,则无法回答 - 您已被要求...

另请参阅:Reference: mod_rewrite, URL rewriting and "pretty links" explained