我已经安装了一个新的多站点WordPress安装。一切正常,除了谷歌仍在抓取旧的URL(扩展名为.php)。
这些URL现在显示一个500错误,这似乎是由于htaccess问题造成的,即这些URL没有命中WordPress。(我目前使用的是标准WordPress多站点htaccess代码。)
RewriteEngine On
RewriteBase /
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]
我需要添加一个重写到网站的。htaccess将删除。在服务器上找不到的文件的php扩展名(即排除WordPress核心文件,如wp-login.php等)
我使用此代码删除。php扩展
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [L,QSA]
</IfModule>
这解决了500错误,并允许我使用wp redirect插件为旧站点设置重定向,正如我最初打算的那样,但它会导致在一些子文件夹multisites上加载样式和图像时出现一些问题,因此我认为它需要改进!
最合适的回答,由SO网友:MrWhite 整理而成
在您的.htaccess
文件:
Options -MultiViews
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+)\\.php$ /$1 [R=302,L]
以上重定向以
.php
不会映射到物理文件并删除
.php
重定向中的扩展。
虽然这些请求(带有.php
扩展)首先不应该触发500错误吗?如果上面的重定向解决了这个问题,那么它似乎暗示是WordPress本身触发了500错误?
我使用此代码删除了。php扩展
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [L,QSA]
</IfModule>
这解决了500错误。。。
此代码更可能导致500错误,而不是修复它?这不会“删除.php
扩展”-它只是将所有URL路由到文档根目录,从而触发mod\\u dir将请求路由到index.php
.