SSL 破坏了我在 WordPress 中的 htaccess 文件
SSL is breaking my htaccess file in WordPress
我的 .htacess 文件不仅对重定向很重要,而且对网站的外观也很重要。我不确定为什么这个主题的开发者会这样做,但我无法改变它。
如果您导航到 http://akcrossfit.com you'll see the site as it should be. When you navigate to https://akcrossfit.com,您将看到没有样式的网站,并且任何导航都会导致 404 错误。
这是我的 .htaccess 文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^other/(.*) /wp-includes/ [QSA,L]
RewriteRule ^file/(.*) /wp-content/uploads/ [QSA,L]
RewriteRule ^ext/(.*) /wp-content/plugins/ [QSA,L]
RewriteRule ^skin/main\.css //index.php?style_wrapper=1 [QSA,L]
RewriteRule ^skin/(.*) /wp-content/themes/richer-child/ [QSA,L]
RewriteRule ^richer/(.*) /wp-content/themes/richer/ [QSA,L]
RewriteRule ^skin_main/(.*) /wp-content/themes/richer/ [QSA,L]
RewriteRule ^ajax /wp-admin/admin-ajax.php [QSA,L]
RewriteRule ^wp-content/themes/richer-child/screenshot\.png|readme \.html|license\.txt|wp-content/debug\.log|wp-includes/$ /nothing_404_404 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
知道要更改什么来解决此问题吗?该站点托管在 Google Cloud Compute Engine 上。在此先感谢您的帮助
这是我的 VHost 配置(至少是与该主题相关的部分)
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName akcrossfit.com:443
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
当我尝试通过 https 访问该站点时,它会将我重定向到非 https URL,但我怀疑问题出在 [=10= 中的 WordPress 地址和站点 URL ].
当您查看该网站时,对您的 CSS 和 Javascript 文件的引用将通过 http 链接,这将防止某些浏览器加载不安全的内容。
如果您希望站点安全,请将您的 WordPress 地址更改为 https URL,以便资源和链接使用 SSL。
编辑:在能够通过 https 查看站点后,您的所有资源(js、图像、javascript)似乎都以 404 错误返回。它甚至看起来 .htaccess 重写规则不适用于帖子和页面。这很可能是由于 SSL 站点的 VHost 配置错误。 Apache 错误日志可能会有所帮助,但我会先查看 SSL 虚拟主机,看看它与主站点有何不同。
编辑 2:现在的问题是,在您的 <Directory /var/www/>
部分中有 AllowOverride None
,它有效地禁用了 .htaccess 重写规则。
我的 .htacess 文件不仅对重定向很重要,而且对网站的外观也很重要。我不确定为什么这个主题的开发者会这样做,但我无法改变它。
如果您导航到 http://akcrossfit.com you'll see the site as it should be. When you navigate to https://akcrossfit.com,您将看到没有样式的网站,并且任何导航都会导致 404 错误。
这是我的 .htaccess 文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^other/(.*) /wp-includes/ [QSA,L]
RewriteRule ^file/(.*) /wp-content/uploads/ [QSA,L]
RewriteRule ^ext/(.*) /wp-content/plugins/ [QSA,L]
RewriteRule ^skin/main\.css //index.php?style_wrapper=1 [QSA,L]
RewriteRule ^skin/(.*) /wp-content/themes/richer-child/ [QSA,L]
RewriteRule ^richer/(.*) /wp-content/themes/richer/ [QSA,L]
RewriteRule ^skin_main/(.*) /wp-content/themes/richer/ [QSA,L]
RewriteRule ^ajax /wp-admin/admin-ajax.php [QSA,L]
RewriteRule ^wp-content/themes/richer-child/screenshot\.png|readme \.html|license\.txt|wp-content/debug\.log|wp-includes/$ /nothing_404_404 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
知道要更改什么来解决此问题吗?该站点托管在 Google Cloud Compute Engine 上。在此先感谢您的帮助
这是我的 VHost 配置(至少是与该主题相关的部分)
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName akcrossfit.com:443
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
当我尝试通过 https 访问该站点时,它会将我重定向到非 https URL,但我怀疑问题出在 [=10= 中的 WordPress 地址和站点 URL ].
当您查看该网站时,对您的 CSS 和 Javascript 文件的引用将通过 http 链接,这将防止某些浏览器加载不安全的内容。
如果您希望站点安全,请将您的 WordPress 地址更改为 https URL,以便资源和链接使用 SSL。
编辑:在能够通过 https 查看站点后,您的所有资源(js、图像、javascript)似乎都以 404 错误返回。它甚至看起来 .htaccess 重写规则不适用于帖子和页面。这很可能是由于 SSL 站点的 VHost 配置错误。 Apache 错误日志可能会有所帮助,但我会先查看 SSL 虚拟主机,看看它与主站点有何不同。
编辑 2:现在的问题是,在您的 <Directory /var/www/>
部分中有 AllowOverride None
,它有效地禁用了 .htaccess 重写规则。