在主页 index.php 中,我有两个 href(如菜单),分别用于 objective.php 和 news.php
对于目标和新闻,我发送了如下变量:
<a href="objectives.php?menu=corporate-objectives">
<a href="news.php?article=meetings">
这个想法是分别加载每个页面的内容,并将 URL 更改为符号链接,例如:
/MyTest_proj/corporate-objectives
/MyTest_proj/meetings
我尝试过很多方法来重写 htaccess 中的规则,尤其是针对两个页面的重写规则,但大多数时候只对第一个重写规则有效,例如:
RewriteRule ^([-a-zA-Z0-9]+)?$ objectives.php?menu=$1
RewriteRule ^([-a-zA-Z0-9]+)?$ news.php?article=$1
显然,这两个页面都匹配相同的模式,并且会议已加载到 objective.php 中,否则(或其他情况下)我收到 401 错误...问题是,如果有任何重写规则和条件,我必须如何放置和编写这些重写规则和条件适用于两个页面?
答案1
问题是您的 RewriteRule 匹配任何包含字母数字字符串的 URL,因此匹配“corporate-objectives”和“news”。由于 mod_rewrite 将应用第一个匹配规则,因此它永远不会应用第二个匹配规则。
换句话说,你需要让你的 RewriteRules 更加具体。下面是一个可以帮助你入门的示例:
RewriteRule ^([-a-zA-Z0-9]*objectives)?$ objectives.php?menu=$1
RewriteRule ^([-a-zA-Z0-9]+)?$ news.php?article=$1
这意味着任何包含单词“objectives”的 URL 都会加载 objective.php,而其他任何 URL 都会加载 news.php。