我设置了重写规则=
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 / - 因为我只想将查询字符串作为网址。
但是,如果我从重写规则中删除^ 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规则下面,它会停止一起工作。任何人都可以阐明为什么会这样,并指出我正确的方向来解决这个问题吗?
答案 0 :(得分:1)
试试这个。在WP htaccess的最后一行
之后添加另一个RewriteBaseRewriteBase /names/
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
答案 1 :(得分:0)
您必须使用[L]
标记规则的结尾。将您的规则更改为:
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 [L,QSA,NC]