Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个.htaccess文件。一个在根目录中,一个在子目录中的wordpress中_Wordpress_.htaccess_Mod Rewrite - Fatal编程技术网

两个.htaccess文件。一个在根目录中,一个在子目录中的wordpress中

两个.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:/

我对.htaccess文件有一个问题(我真的不太理解)-因此,如果我能得到一个解释和一个答案,那将是难以置信的

无论如何,情况如下

目标:我正在尝试删除我网站的www部分,以便它始终作为XXX.com加载

我有一个根目录,其.htaccess编码如下:

 <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文件。我的问题是,我必须对这个文件或根目录文件做什么才能修复规范问题

非常感谢


Alex

htaccess文件中的重写规则优先于子文件夹。这意味着
/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>