我已经设置了重写规则 =
RewriteRule ^names/([a-zA-Z0-9_]+|)(-in-|)([a-zA-Z0-9_]+|)(-|)([a-zA-Z0-9_]+|)(-|)([0-9]+|)/?$ query.php?sector=$1&location=$3&firmname=$5&firmnumber=$7
它按预期工作,即当输入 /names/something_else-in-somewhere-somename-100 时,它将这些变量值传递给 query.php 页面。
这是在使用 WordPress 的网站上构建的,我遇到了似乎默认的 WordPress htaccess 规则的问题,阻止我在没有 /names/ 的情况下使用上面的重写规则 - 因为我只想查询字符串作为 url。
但是,如果我从重写规则中删除 ^names/,它将阻止 WordPress 页面的可访问性。我已将我的重写代码放在 htaccess 文档的顶部,如下所示:
RewriteEngine On
RewriteBase /
RewriteRule ^names/([a-zA-Z0-9_]+|)(-in-|)([a-zA-Z0-9_]+|)(-|)([a-zA-Z0-9_]+|)(-|)([0-9]+|)/?$ query.php?sector=$1&location=$3&firmname=$5&firmnumber=$7
ErrorDocument 404 /404.php
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
# END WordPress
如果我将重写规则置于 WordPress 规则之下,它将停止一起工作。任何人都可以解释为什么会这样,并指出我解决这个问题的正确方向吗?