重写-规则在vhost上不起作用,所有内容都转到index.php

时间:2012-03-22 作者:Sam

在vhost中设置wordpress htaccess规则后,我无法进入wp管理区域。我总是被重定向到wordpress实例的首页。

重写本身在主页上起作用。到目前为止,所有链接都有效,但管理区域仍然没有任何访问权限。

使用的重写规则:

RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
就我个人而言,我不知道从哪里开始寻找,我甚至无法在谷歌上找到这个问题,这有点罕见——也许这里有人知道问题的位置。

3 个回复
最合适的回答,由SO网友:Sam 整理而成

好的,最初的问题是:How to get the Rewrite Rule working at a VHOST Environment 答案——如果不知道的话——有点棘手。RewriteBase在VHOST上不起作用。解决方案是将所有重写内容放在如下目录部分:

<VirtualHost *:80>
  ServerName www.mydomain.tld
  ...more config stuff...

  <Directory "/var/www/mydomain">
    RewriteEngine On
    RewriteBase /

    RewriteRule ^index\\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
  </Directory>
</VirtualHost>
然后它就起作用了。我将在将来更新问题标题,以获得更好的谷歌搜索结果。希望这能帮助任何遇到同样麻烦的人。

SO网友:Tom J Nowell

我不确定这是否有帮助,但这是一个很好的做法,包括围绕规则的开始和结束WordPress评论,以及检查mod\\u重写:

# 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
此外:

在管理区域中选择并保存永久链接之前,不要应用这些规则,只有这样做后,才应设置。htaccess文件插件使用注释来允许重写htaccess文件,而不会弄乱核心wordpress规则,请确保您的重写基础设置正确

SO网友:kennyevo

我在vhost配置中使用了以下内容,您可以使用。项目目录中的htaccess文件:

<Directory "YOUR-PROJECT-PATH">
    Options FollowSymLinks Includes ExecCGI
    AllowOverride All
    DirectoryIndex index.html index.htm index.php
</Directory>

结束

相关推荐

Disable redirect canonical

我正试图阻止index.php 从重定向到文件index.html 我在主目录中也有。我想要index.html 在WordPress站点完成之前的几天里,这是访问者将看到的页面,我将通过添加index.php 到url;但是WordPress重定向index.php 到index.html 这意味着我只能查看页面和帖子,而不能查看主页。我试过remove_filter(\'template_redirect\', \'redirect_canonical\'); 进入functions.php 但它不起