特定文本后匹配URL中的数字序列

时间:2013-03-29 14:14:53

标签: regex .htaccess

我正在尝试匹配“job =”之后的一系列数字,同时忽略之前的内容以及之后的“list.php?job = 11534& name”

下面我发布了我到目前为止的内容,这似乎对网址没有任何影响。 另外,如果规则匹配或不管是什么,[L]是否只会停止重写引擎?

提前感谢您的帮助。

现行规则:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} (?:^|&)job=([^&]+)
    RewriteRule ^([0-9]+)$ /positions/job/$1 [L]

    # Removes index.php from ExpressionEngine URLs
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php?/$1 [L]

1 个答案:

答案 0 :(得分:2)

RewriteRule ^([0-9]+)$将匹配仅包含数字(/4666)的请求,此正则表达式应放在RewriteCond中,%1将引用它,并且尾随?在rewriterule中从新url中排除查询字符串(这是你想要的吗?)。

仅当规则匹配时,

L才会停止当前网址的重写引擎。

RewriteCond %{QUERY_STRING} (?:^|&)job=([0-9]+)
RewriteRule ^.+$ /positions/job/%1? [L]

如果要将用户重定向到新URL,请将R添加到rewriterule选项([L,R=301]),

请注意,如果您想将重定向限制为某些请求(例如job=([0-9]+)),这些指令会将查询字符串与{ur}匹配的任何url重定向到新的url,请务必包含它们在重写规则中,因此指令将是:

/folder/list.php?job=qsd&name=qsd