.htaccess-RewriteRule在另一个RewriteRule之后追加到URL的末尾

时间:2019-03-03 02:10:40

标签: .htaccess

我成功执行了1个RewriteRule。然后,我想要第二个RewriteRule附加到第一个RewriteRule的结果URL的末尾。

我有以下代码:

RewriteEngine On  # Turn on the rewriting engine
RewriteRule ^sports/football/?$ /sports/2018-19/sport_page.php?sport_id=1 [NC]
RewriteRule ^2018-19?$ %{REQUEST_URI}&season_id=39 [L,QSA,R]

第一个RewriteRule起作用-如果在URL中找到“ sports / football /”,它将根据请求进行重定向。

然后我要检查URL中是否存在“ 2018-19”,如果存在,我要在第一个ReWriteURL的结果末尾附加“&season_id = 39”。

用户转到:http://domain/sports/football/2018-19/

第一个RewriteRule:http://domain/sports/2018-19/sport_page.php?sport_id=1

第二个RewriteRule:http://domain/sports/2018-19/sport_page.php?sport_id=1&season_id=39

1 个答案:

答案 0 :(得分:0)

您的RewriteRule需要检查完整的URL路径。

export const createTextFieldGroup = ({
  label,
  type,
  secureTextEntry,
  placeholder,
  name,
  value,
  onChangeText,
  disabled,
  info,
  error
}) => {
  return (
    ...
  )
}

上面的规则将产生重定向循环错误,因为模式和目标路径相同。为了解决这个问题,您可以在规则前放置以下import {createTextFieldGroup} from '../common/TextFieldGroup`; ... render() { <View> { createTextFieldGroup({ label: "First Name" placeholder: "Please enter your first name..." name: "firstName" type: "text" value: this.state.firstName onChangeText: text => this.onChangeText(text, 'firstName') error: errors.firstName }) } </View> }

RewriteRule ^sports/football/2018-19/?$ %{REQUEST_URI}?season_id=39 [L,R]

上面的RewriteCond确保当URI为RewriteCond时该规则不执行。