我正在尝试匹配“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]
答案 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