Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
Apache 重写未在博客子文件夹上执行作业的规则_Apache_.htaccess_Mod Rewrite_Httpd.conf - Fatal编程技术网

Apache 重写未在博客子文件夹上执行作业的规则

Apache 重写未在博客子文件夹上执行作业的规则,apache,.htaccess,mod-rewrite,httpd.conf,Apache,.htaccess,Mod Rewrite,Httpd.conf,最近讨论的以下代码在和上起到了魅力作用: 但是,在我基于WordPress的/blog子文件夹中,它不起作用。我说它不起作用是什么意思?在我的博客上打开页面时,会打开一个安全页面(使用https),这很好。没有问题 但如果我在网站或子域上手动输入一个不安全的链接(仅使用http,不使用“s”),它会自动重定向到一个安全链接(https,带“s”),但在博客上不会发生这种情况,即使使用了相同的重写规则。blog子文件夹的.htaccess与主域和子域子文件夹中的相同 博客子文件夹的.htacces

最近讨论的以下代码在和上起到了魅力作用:

但是,在我基于WordPress的
/blog
子文件夹中,它不起作用。我说它不起作用是什么意思?在我的博客上打开页面时,会打开一个安全页面(使用https),这很好。没有问题

但如果我在网站或子域上手动输入一个不安全的链接(仅使用http,不使用“s”),它会自动重定向到一个安全链接(https,带“s”),但在博客上不会发生这种情况,即使使用了相同的重写规则。
blog
子文件夹的.htaccess与主域和子域子文件夹中的相同

博客
子文件夹的.htaccess文件全文如下:

# BEGIN WordPress
# The directives (lines) between `BEGIN WordPress` and `END WordPress` are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress
RewriteEngine On
# Force www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
# Force https (SSL)
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
# Use PHP70 as default
AddHandler application/x-httpd-php70 .php
<IfModule mod_suphp.c>
    suPHP_ConfigPath /opt/php70/lib
</IfModule>
#开始WordPress
#“BEGIN WordPress”和“END WordPress”之间的指令(行)是
#动态生成,只能通过WordPress过滤器修改。
#这些标记之间对指令的任何更改都将被覆盖。
重新启动发动机
重写库/博客/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/blog/index.php[L]
#结束WordPress
重新启动发动机
#强制www。
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写规则^https://www.%{HTTP_HOST}%{REQUEST_URI}[R=301,L,NE]
#强制https(SSL)
重写条件%{HTTPS}关闭
重写规则^https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L,NE]
#使用PHP70作为默认值
AddHandler应用程序/x-httpd-php70.php
suPHP\u配置路径/opt/php70/lib

另一方面,我不确定是否需要在上安装第二个
重写引擎,或者它是否会带来麻烦,所以我尝试了使用和不使用,结果相同。

只是将https相关规则放在.htaccessB的顶部“你好,杜桑·巴吉奇,这似乎解决了问题。难以置信的为什么呢?诚恳地说,DovidWell,现有的wordpress规则有[L]标志,它阻止执行下面的规则:所有内容都将被重写到/blog/index.php,然后被
RewriteRule^index\.php$-[L]
动态配置文件(.htaccess”)从上到下处理。因此,规则越高,处理越早。通常这是一个先到先得的过程。。。
# BEGIN WordPress
# The directives (lines) between `BEGIN WordPress` and `END WordPress` are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress
RewriteEngine On
# Force www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
# Force https (SSL)
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
# Use PHP70 as default
AddHandler application/x-httpd-php70 .php
<IfModule mod_suphp.c>
    suPHP_ConfigPath /opt/php70/lib
</IfModule>