【问题标题】:htaccess rewriterule can do this?htaccess rewriterule 可以做到这一点吗?
【发布时间】:2015-05-31 22:29:33
【问题描述】:

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

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

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

我该如何解开这个谜语?

【问题讨论】:

  • 就像您上次被告知的那样,您需要为两个 URL 映射提供一个差异化因素。 RewriteRule(我们也不知道)可以猜测您的哪个“主文件”(这是需要详细说明的部分)处理哪些关键字。
  • 与其让我更难,为什么不尝试帮助我。我不明白我在这里做错了什么。这不是治疗残疾人的原因。
  • Eddie,你的 htaccess 中有 2 条规则吗?
  • @eddie 我记得,我确实试图提供帮助。但是您似乎已经删除了我将这些 cmets 放在哪里的问题...
  • 感谢您的帮助@Starkeen,不,我只有这个。

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


【解决方案1】:

当然。您可以拥有多个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

【讨论】:

  • 感谢您的帮助@mario,我试过了,但它给出了 404 错误页面,当然我更改了所有相关但仍然给出错误。我希望我能解释得更多,这样会更清楚。
  • 如果我想粘贴一些脚本代码,会有帮助吗?
  • 不,不会。我猜你可能甚至没有写那些脚本。否则,您可以总结或解释他们的行为。两天前。
猜你喜欢
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多