我知道这是一个涉及很多的主题,所以我只想确保每个人都知道:我已经在这里阅读并尝试过许多重写建议,但是没有运气。
我有一个运行良好的WordPress安装(nginx服务器,带apache的虚拟机),但是URL中的目录+查询存在问题。如果该目录在查询之前没有结尾的斜杠,则它不会解析(弹回博客索引)。
示例:
www.example.com/blog /?= generic_query 效果很好。
www.example.com/blog?=generic_query 没有。
不幸的是,我已安装的主题(X-Theme)具有一些管理菜单,这些菜单指向的页面在查询之前在目录中没有结尾斜杠。
我试图重写htaccess中的条件,但是我没有取得任何成功。我读过其他人的文章说,PHP通常根本不关心此事,因此这一奇怪的nginx安装引起了大惊小怪的事实让我想知道这是否是服务器问题。
有人针对这个非常具体的问题有任何建议吗?如果这样的话,将不胜感激!
谢谢
-
编辑:将我的htaccess根文件放在这里。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
答案 0 :(得分:2)
将此内容放入.htaccess
文件中:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,7}\s/(.*?)([^\/])\?(.*)\sHTTP.*$
RewriteRule ^(.*)$ /%1%2/?%3 [L]
第二个石灰将检查请求是否在/
之前没有?
。
第三行会将其添加到内部请求中。
更新:
保存您以前的规则并放入:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{THE_REQUEST} /blog(/)?\?(.*)\sHTTP.*$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /blog/index.php [L]
</IfModule>
# END WordPress