1

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

下面我发布了到目前为止的内容,这似乎对 URL 没有影响。此外,如果规则匹配或无论如何, [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]
4

1 回答 1

2

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

L仅当规则匹配时才会停止当前 url 的重写引擎。

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

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

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

RewriteCond %{QUERY_STRING} (?:^|&)job=([0-9]+)
RewriteRule ^folder/list\.php$ /positions/job/%1? [L]
于 2013-03-29T14:23:31.103 回答