两个.htaccess文件。一个在根目录中,一个在子目录中的wordpress中
我对.htaccess文件有一个问题(我真的不太理解)-因此,如果我能得到一个解释和一个答案,那将是难以置信的 无论如何,情况如下 目标:我正在尝试删除我网站的www部分,以便它始终作为XXX.com加载 我有一个根目录,其.htaccess编码如下:两个.htaccess文件。一个在根目录中,一个在子目录中的wordpress中,wordpress,.htaccess,mod-rewrite,Wordpress,.htaccess,Mod Rewrite,我对.htaccess文件有一个问题(我真的不太理解)-因此,如果我能得到一个解释和一个答案,那将是难以置信的 无论如何,情况如下 目标:我正在尝试删除我网站的www部分,以便它始终作为XXX.com加载 我有一个根目录,其.htaccess编码如下: <IfModule mod_rewrite.c> RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ http:/
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule>
重写cond%{HTTPS}=在…上
重写cond%{HTTP_HOST}^www\.(.+)$[NC]
重写规则^http://%1%{REQUEST_URI}[R=301,L]
这对它的目的很有效。然而,在一个名为“Info”的目录中,我安装了Wordpress,它有自己的.htaccess,目前看起来像:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /info/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /info/index.php [L]
</IfModule>
重新启动发动机
重写库/信息/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/info/index.php[L]
这不会删除www,而是标准的WordPress安装.htaccess文件。我的问题是,我必须对这个文件或根目录文件做什么才能修复规范问题
非常感谢
Alexhtaccess文件中的重写规则优先于子文件夹。这意味着
/info/
文件夹中的htaccess文件完全取代父目录中的任何规则。这就是为什么根目录中的规则被忽略的原因
如果您使用的是apache 2.4,则可以使用以下选项:
这使得父目录中的任何规则在当前目录中的任何规则之前得到应用
如果您没有使用apache 2.4,那么您必须在wordpress规则之前复制规则:
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /info/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /info/index.php [L]
</IfModule>
重写cond%{HTTPS}=在…上
重写cond%{HTTP_HOST}^www\.(.+)$[NC]
重写规则^http://%1%{REQUEST_URI}[R=301,L]
重新启动发动机
重写库/信息/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/info/index.php[L]
我自己解决了这个问题。在WP中,这是非常容易做到的
我登录到wp-login.php,然后进入常规设置,在这里我从两个列出的URL中删除了“www.”。。。真有魅力 URL的scheme部分告诉浏览器请求使用哪个协议。所以你不能删除它,除非它是一个相对路径。我不同意,因为目前我的情况是根目录中的页面加载为domain.com。如果我移动到WP目录,它在第一组中加载为missed
RewriteEngine On
(在开始时使用HTTP://)<代码>http://部分隐藏浏览器本身。第一个.htaccess可以正常工作吗?!因此,如果您转到这个URL:您将看不到HTTP。如果你去,你会看到HTTP?有什么想法吗?你是说www
?第二组中的www.
上没有重定向。也许是它让WordPress的脚本更完美。感谢你的回答,尽管它不起作用。InherhitBefore选项产生了一个500错误(因此我假设我没有使用Apache2.4)。第二个选项一旦实现就会停止页面的渲染。很抱歉,这不是一个解决方案。对许多网站来说,从www.到没有www.是一个巨大的变化。
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /info/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /info/index.php [L]
</IfModule>