带有参数的多个页面的 htaccess 重写规则

带有参数的多个页面的 htaccess 重写规则

在主页 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。

相关内容