首页 > 解决方案 > 在生产服务器上更改 .htaccess 文件时出现错误 500

问题描述

.htaccess我之前在我的 Wordpress 站点的本地开发版本上运行文件没有任何问题,但是.htaccess在我的生产站点上对文件进行等效更改会导致整个站点返回错误 500。

该站点在服务器上的结构如下:

- www.mydomain.com
-- logs
-- public_html
--- (Wordpress root folder)
--- .htaccess
--- index.php 
-- webstats

.htaccess这是我试图在网站上运行的修改后的文件:

#START WORDPRESS

RewriteEngine On
RewriteBase /public_html/

RewriteRule ^about/?$ /public_html/about/history/ [L,NC,R=301]
RewriteRule ^library/?$ /public_html/the-library/gallery/ [L,NC,R=301]

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

#END WORDPRESS

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300

我对 .htaccess 语法的理解非常缺乏,所以我不能确定我在文件语法中出了什么问题会导致这个问题。

标签: wordpress.htaccess

解决方案


在检查 error.log 时对anubhava 大喊大叫,我确实这样做了,并在那里发现了两个离散的错误。

第一个是Andrea引用的:

无效的命令“php_value”,可能拼写错误或由服务器配置中未包含的模块定义

我设法通过用and包裹php_value块来解决这个问题。请注意之后缺少版本号-在许多地方推荐的使用对我不起作用。<IfModule mod_php.c></IfModule>mod_phpmod_php_7

第二个错误如下:

RewriteBase:参数不是有效的 URL

因为我的 .htaccess 文件位于我的文档根目录(public_html在 Siteground 托管的情况下),所以它只需要是一个/,这也是 RewriteRules 所需的全部内容。

我的完成.htaccess,没有错误,所有重定向都正常工作,现在看起来像这样:

<IfModule mod_php.c>

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300

</IfModule>

#START WORDPRESS

RewriteEngine On
RewriteBase /

RewriteRule ^about/?$ /about/history/ [L,NC,R=301]
RewriteRule ^the-library/?$ /the-library/gallery/ [L,NC,R=301]

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

#END WORDPRESS

推荐阅读