在我的Apacheconfiguration我有以下设置
<Directory "/opt/website/new-website-old/httpdocs"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <Location /server-status> #AllowOverride None SetHandler server-status Order deny,allow Deny from all Allow from all </Location>
使用此服务器状态的作品,但如果我更改allowoverride选项,所有它不。 如果allowoverride选项设置为All,如何获得服务器状态
我跟着这个,但仍然没有运气的WordPress的服务器状态
在我目前的ht访问文件中
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] RewriteCond %{HTTP_HOST} ^www.asb.com.au$ [NC] RewriteRule ^(.*)$ http://www.domain.com/about/the-group/domain-asb$1 [R=301,L] </IfModule> # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
首先,我对你在位置块中使用以下内容感到困惑,我觉得你可能想要拒绝所有的,但也许允许你自己的IP,但我离题了。
Deny from all Allow from all
您发布的指南中错过的最重要的内容是以下行:
RewriteCond %{REQUEST_URI} !=/server-status
这将使.htaccess文件看起来更像这样:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_URI} !=/server-status RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
最重要的是,你的.htaccess中似乎有两个单独的重写块,它们几乎是相同的,我将它们合并为一个,以使.htaccess的最终内容成为(而不是其他的):
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_URI} !=/server-status RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] RewriteCond %{HTTP_HOST} ^www.asb.com.au$ [NC] RewriteRule ^(.*)$ http://www.domain.com/about/the-group/domain-asb$1 [R=301,L] </IfModule>
AllowOverride设置为none就是让Apache完全忽略.htaccess文件,所以当它被设置为all时,显然会告诉你.htaccess中的某些内容正在重写/ server-status的function由服务器状态处理程序处理。 在.htaccess文件中,违规行基本上是:
RewriteRule . /index.php [L]
这是告诉Apache重写所有东西,并将其发送到index.php,这是因为WordPress通过index.php处理一切,并允许SEO的url,除其他事情。
我们添加的行:
RewriteCond %{REQUEST_URI} !=/server-status
告诉apache做我们上面所说的(根据RewriteRule重写所有的index.php),除非URI是/ server-status – 因为那将不会被重写并发送到wordpress index.php,处理程序应该能够performance得像预期的那样。
另外两个条件
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
为了你的知识,告诉Apache不要重写url,如果请求是一个实际的文件,或一个实际的文件夹。
您可以在官方文档中阅读更多关于Mod_Rewrite的信息 。
获取服务器状态页面与Wordpress重写规则一起工作的最简单的方法是在Wordpress文件夹中创build名称为server-status
的文件夹或文件
这是有效的,因为(正如WerkkreW指出的那样)规则:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
意味着如果存在具有相同名称的文件或目录,则不应该进行重写。