【问题标题】:.htaccess rewrite regex regular expressions.htaccess 重写 regex 正则表达式
【发布时间】:2011-04-12 03:07:18
【问题描述】:

我的网址是:

http://www.domain.com/Seattle_WA_math

它需要指向:

http://www.domain.com/list.php?city=Seattle&state=WA&s=math

这是我目前所拥有的,不起作用......

RewriteRule ^[A-Za-z_\-]+_[A-Z]{2}_[A-Za-z0-9_\-\(\)]+\/$ list.php?city=$1&state=$2&$s=$3 [L]

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite rewrite


    【解决方案1】:

    应该这样做:

    RewriteRule ^([A-Za-z\-]+(?:_[A-Za-z\-]+)*)_([A-Z]{2})_([A-Za-z0-9_\-\(\)]+)\/?$ list.php?city=$1&state=$2&$s=$3 [L]
    

    允许多措辞的城市和主题以及可选的尾随 / 路径。

    【讨论】:

      【解决方案2】:

      我正在即时输入,但它应该可以工作。

      重写规则 ^([a-zA-Z-]+)([A-Z]{2})([a-zA-Z0-9_-]+)$ list.php?city =$1&state=$2&s=$3

      ( ) 指定末尾部分的 $# 变量,因此匹配的所有内容都应对齐。

      【讨论】:

      • 它没有用...得到一个 404 not found 错误。我将脚本更改为 RewriteRule ^([a-zA-Z-]+)_([A-Z]{2})_([a-zA-Z0-9_-]+)\/$ list.php?city= $1&state=$2&s=$3 [L] 并已加载但未抓取任何变量
      【解决方案3】:

      在你的 .htaccess 文件中试试这个:

      RewriteEngine on
      Options +FollowSymlinks -MultiViews
      RewriteRule ^([A-Za-z-]+(?:_[A-Za-z-]+)*)_([A-Z]{2})_([A-Za-z0-9_-]+)/?$ /list.php?city=$1&state=$2&s=$3 [R,L,QSA,NE]
      

      R=301 将使用 https 状态 301 重定向
      L 将制定最后一条规则
      NE 用于禁止转义查询字符串
      QSA 将附加您现有的查询参数

      $1$2$3 是您的 REQUEST_URI 中的组

      【讨论】:

      • 一个小问题...有些城市和科目会有2或3个字。 domain.com/New_York_NY_algebra_1
      • @Jeffrey:我在上面编辑了我的答案,以处理城市名称和主题字符串中的多个 _
      猜你喜欢
      • 1970-01-01
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      相关资源
      最近更新 更多