Htaccess 500 ошибка редирект

The 500 error is a server error and occurs when the requested address cannot be reached. Let's see what it depends on and how to solve it.

The error 500 can prevent you from accessing a page or website. When this error occurs, in fact, the server sends an HTTP error 500 status code to the browser to communicate a generic problem that prevents you from reaching the requested address.

When error 500 prevents you from reaching a site, the solution is to try again later when the problem has been resolved.

But what if error 500 occurs on your site? There are several checks you can do to try and fix it as soon as possible, so you won’t have a negative impact on your site visits and, more importantly, sales.

In this article,500 error: how to solve it, we’ll see what kind of problem is behind a 500 error. We’ll look at the possible causes and see what solutions you can implement to quickly fix the error and get your site back online.

To top it off, we will also see how to get around the error 500 in case you are not the owner of the site, but just want to access a temporarily unreachable resource.

What is Error 500?

The definition of Error 500 given by the IETF (Internet Engineering Task Force) is as follows:

Status code 500 (Internal Server Error) indicates that the server encountered an unexpected condition that prevented it from fulfilling the request. (RFC7231)

500 Error

So let’s start in order, what is an HTTP status code?

To allow us to reach an address, the browser must send a request to the server on which the site is hosted. The server, in response, returns a code to communicate the outcome of the request.

HTTP status codes are composed of 3 digits, the first of which indicates the category:

1XX: status codes starting with 1 are the informational ones. They indicate that the request has been received and they have yet to process it.

2XX: these codes are the confirmation codes, meaning that the request has been received and processed.

3XX: these are the redirection codes that are used when a resource has been moved temporarily (redirect 302) or permanently (as in the case of redirect 301)

4XX: these codes indicate client errors, such as error 403 and error 404 indicating a resource not found.

5XX: this is the category of server errors. It includes error 502 bad gateway, 504 gateway time-out and error 508, as well as error 500.

So these are the five categories of standard HTTP status codes. Then there are other codes that are always in decimal form and provide further details about the status of the request.

An example is given by Microsoft IIS (Internet Information Services) servers which in the case of error 500 allow getting more specific about the causes of the error.

  • 500.0: the error is in a module or in ISAPI
  • 500.11: one of the applications on the server is about to be stopped.
  • 500.12: an application is about to restart.
  • 500.13: server overload
  • 500.15: request for global.asax file not allowed
  • 500.19: configuration data is not valid
  • 500.21: one of the modules was not recognized
  • 500.22: the configuration of an HTTP module of an ASP.NET web application is not valid in Managed Pipeline mode
  • 500.23: the configuration of an HTTP handlers element of an ASP.NET web application is not valid in Managed Pipeline mode
  • 500.24: problems with the configuration of an identity change in Managed Pipeline mode
  • 500.50: there was a rewrite error when processing the RQ_BEGIN_REQUEST message
  • 500.51: there was a rewrite error while processing GL_PRE_BEGIN_REQUEST message
  • 500.52: there was a rewriting error while processing the message RQ_SEND_RESPONSE
  • 500.53: there was a rewriting error while processing the message RQ_RELEASE_REQUEST_STATE
  • 500.100: the error occurred within the ASP application.

Error 500 can occur in a number of ways, here are some of the most common variations you may come across:

  • 500 Internal Server Error
  • HTTP 500 Internal Error
  • HTTP Error 500
  • Internal Server Error
  • The website cannot display the page
  • HTTP 500 – Internal Server Error
  • Internal Server Error 500
  • 500 Error
  • 500 Server Error
  • 500 Internal Server Error. Sorry something went wrong.
  • Temporary Error (500)
  • Server Error 500 internal
  • Error 500 HTTP
  • Error 500 Internal Server Error
  • HTTP Error 500
  • An error occurred during data request (500)

The error message can change from one server to another and on different browsers. In the screenshot below you can see an example of the error on Google Chrome.

500 Error This Page Isnt Working

Other browsers, such as Firefox, however, may also simply show you a white screen like this.

500 Error Blank Page

Causes of error 500

Error 500 can result from several causes ranging from an error in the .htaccess file to server unavailability due to maintenance. In this paragraph, we will examine some of the most common causes that can generate this type of error. In the next one, instead, we’re going to see how to proceed step by step to solve it.

Errors in the file .htaccess

The .htaccess file is used to insert directives for Apache servers. For example, you can use the .htaccess file to implement 301 redirects.

The presence of an error, such as an incorrect command or even a syntax or writing error, within this file, can cause the server to respond with an error 500.

Permissions errors

Permissions can be set for all files and folders on the server. This determines which users are granted permissions to read, write and execute files.

For example regarding permissions for WordPress files and folders you should use the following permissions:

  • 644 or 640 for files
  • 755 or 750 for folders.

An error in permissions can be the cause of a 500 error.

Problems with a script

An error in the syntax or code of a script, but also in the path setting can cause a 500 error. Also, you may have problems with Perl scripts if they were loaded in binary mode instead of ASCII, or if the necessary modules were not installed.

Problems with the server

Error 500 may be due to problems with the server, for example, if there is an overload on the server or due to maintenance. In these cases, you can wait and try to reload the page after some time or contact your provider.

Compatibility problems with plugins and themes

When using a CMS with extensions, plugins, or themes, a common situation you might find yourself in is a 500 error right after installing one of these components.

To quickly figure out if the cause of the 500 error is a plugin you can disable all of them temporarily. You can do this directly from the dashboard, but if you can’t log in, there are other methods as well, which we’ll see later in the section on Error 500 solutions.

Problems with WordPress core files

Although error 500 is not directly related to the platform you’re using, there are cases where the problem can stem from the CMS files.

For example, in the case of WordPress, it is possible that the core files have been damaged and need to be restored. In this case, you’ll have to proceed to reinstall WordPress without losing the content you’ve created so far.

Keep in mind that it is essential to make a backup before proceeding, to avoid losing your content.

Database problems

A 500 error can result from a problem with the database. Among the most common causes for which you may find yourself having your site down are:

  • wrong credentials to access the database
  • corrupted database
  • database server overload.

PHP memory limit

If a script exceeds the memory threshold, the process is inhibited and you may be faced with a 500 error.

500 error: how to solve it

In addition to looking at the possible causes, we just saw there are other checks we can do to determine the origin of error 500. First, let’s start by analyzing the log files, and then see how to practically fix the common problems we saw earlier.

Check the log files

The cause of error 500 may not fit into the list of common causes we just reviewed. That’s why one of the first things to do is to go and check the server’s error logs or logs.

Access the site’s files, for example through the cPanel file manager, and look for a file like this “error_log”:

500 Error File Manager View Error Log File

With WordPress you can also enable debug mode by adding this code to the wp-config.php file:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Check file and folder permissions

You should make sure that files and folders on the server have proper permissions. For example in the case of WordPress, files should have permissions 644 or 640, while folders should be 755 or 750.

You can check and possibly change the file permissions in several ways. For example, you can use the cPanel file manager. With all our shared hosting plan, WordPress hosting, VPS cloud hosting and dedicated servers you can conveniently manage your site files from the file manager.

Next to each file, you’ll see a column that says Permissions and indicates the permissions of the file. In this example, all files are set to 644 and folders to 755.

If you want to change the permissions just click on the number corresponding to the file you want to change, type the new code and click on Save as you see in this screenshot:

500 Error Edit Permissions In Cpanel

You can also change file permissions with an FTP client. For example, you can see how to do it with Filezilla, in our guide dedicated to one of the most used FTP clients.

500 Error File Permissions Filezilla

HTTP error 500 and problems with the .htaccess file

As we said before, one of the causes of an internal server error can be an error in the .htaccess file.

To check if the .htaccess file is the cause, all you have to do is rename it temporarily. You can always do this using the file manager or by accessing the server via FTP.

If you use cPanel’s file manager and can’t find the file, you’ll have to check the settings and make sure the Show hidden files (dotfiles) option is enabled.

500 Error Show Hidden Files In File Manager

Once you have located the .htaccess file, simply rename it and see if the error 500 has been resolved.

500 Error Rename Htaccess File

If the error 500 no longer appears after renaming the .htaccess file, you will need to locate and correct the error in it. After that, you can rename the file back to its original name (.htaccess).

Change PHP memory limit

If one of the active processes on your site is exceeding the PHP memory limit, you may see an error 500.

In this case, you can change the memory limit to see if this is the cause of the error. There are several ways to do this, one of the easiest is to proceed directly from cPanel.

After logging into cPanel click on Select PHP version from the Software section.

500 Error Select Php Version

This tool allows us to change the PHP version and modify the memory limit.

Click on the Options tab and scroll down to memory_limit, then set the PHP memory limit according to the options the drop-down menu allows you.

500 Error Edit Php Memory Limit

Deactivate plugins

Sometimes activating a new plugin or theme can cause a 500 error. To figure out if the cause of the error is a plugin you can temporarily disable all plugins and see if the error gets resolved.

You can deactivate WordPress plugins in several ways: from the dashboard, through the control panel (or via FTP), but also using phpMyAdmin or through WP-CLI.

After deactivating all plugins check if the 500 error has been resolved. In this case, you will have to reactivate the plugins one by one and check if the error reoccurs to find the responsible plugin.

Disable plugins from the dashboard

The easiest way to deactivate all plugins is to do it directly from the dashboard:

  • check the box to select all plugins
  • from the Group Actions drop-down menu choose Deactivate
  • then click on Apply button and all plugins will be deactivated.

500 Error Deactivate WordPress Plugins

If you can’t access the dashboard there are other ways to disable plugins.

Disable plugins from file manager

You can disable all plugins by simply renaming the folder that contains them. You can access your site files from cPanel file manager or by using an FTP client like Filezilla.

Usually the path to the plugins folder is this: /public_html/wp-content/plugins. Rename it, as you see in this example and check if error 500 still occurs.

500 Error Reneme Plugin Folder

After that you’ll have to rename the folder again, using the original name and you’ll be able to manually reactivate plugins from the WordPress dashboard.

Disable plugins with phpMyAdmin

We can use phpMyAdmin to deactivate plugins directly from the database. In this case, remember that before making changes to the database it is always wise to create a backup.

To deactivate plugins we just need to open the wp_options table and edit the active_plugins record inserting a:0:{} inside the option_value.

You can follow the procedure step by step in our guide to phpMyAdmin for WordPress.

Disable plugins with WP-CLI

WP-CLI allows us to manage our WordPress installations from the command line. With one command you can deactivate all plugins:

wp plugin deactivate --all

Also in this case you can check if the error depends on one of the plugins and go to reactivate them one by one from the dashboard.

Contact support

If you can’t find the cause of the error 500, you can always contact support, indicate the checks you have already done and find a solution to the problem with support.

Alternatively, if you want to entrust the technical management of the site to a team of professionals, you can consider switching to a managed WordPress solution. In this way, the resolution of errors of this type, as well as the maintenance operations of your site will be entrusted to experienced hands.

How to solve as a user

The solutions we have seen can be applied in case the error 500 occurs on your site.

If, on the other hand, error 500 appears on the site you are trying to visit, there is little you can do.

Since this is a server-side error, it does not depend on your connection or the device you are using. In fact, if you try to it access from another device or browser, you will find yourself facing the same error.

You can try to check the status of the site with a free service like Down for Everyone or Just Me that allows you to understand if the site is online or not.

In such cases, then, you just have to wait and try to connect to the site again later. If you need to access the content of the page, you can always take advantage of the Google cache to access the version of the site stored in the search engine cache.

Conclusion

As we have seen in this article,500 error: how to solve it, the error 500 is a server error that occurs when something goes wrong and makes it impossible to reach the desired site.

Since it is a generic error, the browser doesn’t offer more information about what caused the problem, it just shows the HTTP error 500 status code, or in other cases, it just shows you a blank screen. For this reason, the only way to solve it is to rule out possible causes one by one.

In this article, we’ve seen what the most common causes of error 500 are, and we’ve looked at possible ways to fix it in case the problem occurs on your site. If, on the other hand, you come across the error while you visit a site, there’s a little trick you can use to still access the resources you were looking for.

Have you ever seen an error 500 on your site? How did you solve it? Let me know in the comments below if the solutions in this article helped you solve it or if you had to use some other method, so we can add more solutions to help out our readers.

Yes, there is a rewrite loop for every URI coming from a subdomain here that doesn’t map to a filename or directory.

For example if the client comes in with mail.indst.eu/nofile

  • Hit subdomain rule mail.indst.eu for condition !^/mail -> rewrite to mail.indst.eu/mail/nofile
  • No longer matches !^/mail, doesn’t hit any external redirect rules, so falls through towards the end.
    • Doesn’t match the rewrite exclusion for existing files or one of the hardcoded exclusions
    • Hits the non-host-bound all-uri rule, gets rewritten to mail.indst.eu/index.php
  • Now it matches again the subdomain rule mail.indst.eu for condition !^/mail -> rewrite to mail.indst.eu/mail/index.php
  • No longer matches !^/mail, doesn’t hit any external redirect rules, so falls through towards the end.
  • Hits the non-host-bound all-uri rule, apparently mail/index.php is not an existing file, so /mail/index.php gets rewritten to /index.php, now we are in an alternating repeat between /index.php and /mail/index.php

/nofile
/mail/nofile (does not exist)
/index.php
/mail/index.php (does not exist)
/index.php
/mail/index.php (does not exist)
...repeat last two...

If you place an index.php in the subdirectories used by the subdomains, then a non-existing file uri on a subdomain will end up at the matching subdomain/index.php files, which for some applications may be what you want.
If you want a serverlevel 404 response, then you have to exclude the subdomain hosts from the catchall rewrite to index.php.

For example

RewriteCond %{HTTP_HOST} !^mail.indst.eu$
RewriteCond %{HTTP_HOST} !^www.statesanalytics.com$
RewriteRule ^.*$ index.php [NC,L]

OR, which might be more succint, and allow more subdomains:

RewriteCond %{REQUEST_URI} !^/mail
RewriteCond %{REQUEST_URI} !^/sa
RewriteRule ^.*$ index.php [NC,L]

Then a non existing uri at mail.indst.eu/starting-path is server level non existing if it doesn’t exist in mail/starting-path

There are other techniques to prevent such loops. If you know that there would always at most be one internal redirect for example, and all rewriterules reside in this one .htaccess then you can do this as first rewriterule in your .htaccess:

RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule ^(.*)$ - [L]

That stops further internal redirects from this .htaccess. But it would require you to put the external redirect rules that you have before the internal redirect rules. It would not stop the RedirectMatch rules.

Or, if you know that a catchall rewrite to index.php should always be the last word the end mod_rewrite processing with [END]. But in this case that would mean a 404 on the subdomain ends up with the main directory index.php which may not be what you want.

RewriteRule ^.*$ index.php [END]

вот мой .htaccess

DirectoryIndex index.php


RewriteEngine On

# Optimize deflate
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

# Options +FollowSymLinks


# Accses in folder
Options All -Indexes


# Loading Errors
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
# Optimize deflate - немного ускоряем работу скрипта.
# Accses in folder - Запрещаем вывод каталога папок, как я видел у некоторых доступно по адресу http://mysiti.com/templates/Default/ - каталог как на ладони.
# Loading Errors - выводим собственно свою ошибку..

# Виджеты
    RewriteRule ^dev/widget_comm(/?)+$ index.php?go=dev_wid&act=widget_comm [L]

# Отключаем вывод ошибок пользователям
	php_flag display_errors off



	
#robots.txt
    RewriteCond %{HTTP_USER_AGENT} !^yandex.* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} !^googlebot.* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} !^rambler.* [NC,OR]
    RewriteRule ^robots.txt$ / [L,R]	

# Регистрация
	RewriteRule ^reg/(/?)+$ index.php?go=register [L]
	
# Отзывы
	RewriteRule ^reviews(/?)+$ index.php?go=reviews [L]
	
# Apps
	RewriteRule ^apps(/?)+$ index.php?go=apps [L]
	RewriteRule ^app([0-9]+)(/?)$ index.php?go=apps&act=app&id=$1 [L]
	RewriteRule ^apps(/?)+$ /index.php?go=apps&act=search [L]
	RewriteRule ^apps(/?)+$ /index.php?go=apps&act=view [L]
	RewriteRule ^apps(/?)+$ /index.php?go=apps&act=mydel [L] 
	RewriteRule ^apps(/?)+$ /index.php?go=apps&act=install [L]

	RewriteRule ^editapp/create(/?)+$ /index.php?go=editapp&act=create&id=$1 [L]
	RewriteRule ^editapp/info_([0-9]+)(/?)+$ /index.php?go=editapp&act=info&id=$1 [L]
	RewriteRule ^editapp/options_([0-9]+)(/?)+$ /index.php?go=editapp&act=options&id=$1 [L]
	RewriteRule ^editapp/payments_([0-9]+)(/?)+$ /index.php?go=editapp&act=payments&id=$1 [L]
	RewriteRule ^editapp/admins_([0-9]+)(/?)+$ /index.php?go=editapp&act=admins&id=$1 [L]
	
# Баги
	RewriteCond %{QUERY_STRING} ^act=([a-z]+)
	RewriteRule ^(.*)bugs $1index.php?go=bugs [QSA,L]	
	RewriteCond %{QUERY_STRING} ^id=([0-9]+)
	RewriteRule ^(.*)bugs $1index.php?go=bugs [QSA,L]
	RewriteRule ^bugs(/?)+$ index.php?go=bugs [L]
	
# API
    RewriteRule ^method/messages.get method/messages.get.php [L]
    RewriteRule ^method/messages.set method/messages.set.php [L]
    RewriteRule ^api(/?)+$ method/messages.set method/messages.set.php [L]

	
# Разработчикам
    RewriteRule ^dev(/?)+$ index.php?go=developers [L]
	RewriteRule ^dev/met(/?)+$ index.php?go=met [L]
	RewriteRule ^dev/native(/?)+$ index.php?go=native [L]
	RewriteRule ^dev/tt(/?)+$ index.php?go=tt [L]
	RewriteRule ^dev/standalone(/?)+$ index.php?go=standalone [L]
	RewriteRule ^dev/sites(/?)+$ index.php?go=sites [L]
	RewriteRule ^dev/rules(/?)+$ index.php?go=rules [L]
	
# Статистика страницы пользователя
	RewriteRule ^my_stats(/?)+$ index.php?go=my_stats [L]
	
# Страница юзера
	RewriteRule ^u([0-9]+)(/?)+$ index.php?go=profile&id=$1 [L]
	RewriteRule ^u([0-9]+)after(/?)+$ index.php?go=profile&id=$1&after=1 [L]
	
# Редактирование страницы
	RewriteRule ^editmypage(/?)+$ index.php?go=editprofile [L]
	RewriteRule ^editmypage/contact(/?)+$ index.php?go=editprofile&act=contact [L]
	RewriteRule ^editmypage/interests(/?)+$ index.php?go=editprofile&act=interests [L]
	RewriteRule ^editmypage/all(/?)+$ index.php?go=editprofile&act=all [L]


  • Вопрос задан

    более трёх лет назад

  • 750 просмотров

Пригласить эксперта

Знаете как я поступаю в таких ситуациях? Когда не знаю где ошибка и нет подсказок

Делю код на несколько частей, поочередно удаляю один за другим и смотрю работает или нет, до тех пор пока не заработает, а потом уже работаю над последней удаленною частью, все очень просто, Ватсон

в /var/log/apache2/error.log смотрите, там будет указана, какая именно из директив htacces на этом сервере не работает.
Скорее всего нужно a2enmod rewrite или a2enmod filter


  • Показать ещё
    Загружается…

09 февр. 2023, в 22:06

500 руб./за проект

09 февр. 2023, в 22:01

50000 руб./за проект

09 февр. 2023, в 22:00

1 руб./за проект

Минуточку внимания

В статье мы расскажем, как исправить ошибку (код состояния) 500 со стороны пользователя и администратора сайта, а также подробно разберём, что такое ошибка запроса 500.

Что такое внутренняя ошибка сервера 500

Код ошибки 5хх говорит о том, что браузер отправил запрос корректно, но сервер не смог его обработать. Что значит ошибка 500? Это проблема сервера, причину которой он не может распознать.

Сообщение об ошибке сопровождается описанием. Самые популярные варианты:

  • Внутренняя ошибка сервера 500,
  • Ошибка 500 Internal Server Error,
  • Временная ошибка (500),
  • Внутренняя ошибка сервера,
  • 500 ошибка сервера,
  • Внутренняя ошибка HTTP 500,
  • Произошла непредвиденная ошибка,
  • Ошибка 500,
  • HTTP status 500 internal server error (перевод ― HTTP статус 500 внутренняя ошибка сервера).

Дизайн и описание ошибки 500 может быть любым, так как каждый владелец сайта может создать свою версию страницы. Например, так выглядит страница с ошибкой на REG.RU:

Как ошибка 500 влияет на SEO-продвижение

Для продвижения сайта в поисковых системах используются поисковые роботы. Они сканируют страницы сайта, проверяя их доступность. Если страница работает корректно, роботы анализируют её содержимое. После этого формируются поисковые запросы, по которым можно найти ресурс в поиске.

Когда поисковый робот сканирует страницу с ошибкой 500, он не изменяет её статус в течение суток. В течение этого времени администратор может исправить ошибку. Если робот перейдёт на страницу и снова столкнётся с ошибкой, он исключит эту страницу из поисковой выдачи.

Проверить, осталась ли страница на прежних позициях, можно с помощью Google Search Console. Если робот исключил страницу из поисковой выдачи, её можно добавить снова.

Код ошибки 500: причины

Если сервер вернул ошибку 500, это могло случиться из-за настроек на web-хостинге или проблем с кодом сайта. Самые распространённые причины:

  • ошибки в файле .htaccess,
  • неподходящая версия PHP,
  • некорректные права на файлы и каталоги,
  • большое количество запущенных процессов,
  • большие скрипты,
  • несовместимые или устаревшие плагины.

Решить проблему с сервером можно только на стороне владельца веб-ресурса. Однако пользователь тоже может выполнить несколько действий, чтобы продолжить работу на сайте.

Что делать, если вы пользователь

Если на определённом ресурсе часто возникает ошибка 500, вы можете связаться с владельцем сайта по инструкции.

Перезагрузите страницу

Удаленный сервер возвращает ошибку не только из-за серьёзных проблем на сервере. Иногда 500 ошибка сервера может быть вызвана небольшими перегрузками сайта.

Чтобы устранить ошибку, перезагрузите страницу с помощью сочетания клавиш:

  • на ПК — F5,
  • на ноутбуке — Fn + F5,
  • на устройствах от Apple — Cmd + R.

Обратите внимание! Если вы приобретаете товары в интернет-магазине и при оформлении заказа появляется 500 Internal Server Error (перевод — внутренняя ошибка сервера), при перезагрузке страницы может создаться несколько заказов. Поэтому сначала проверьте, оформился ли ваш предыдущий заказ. Если нет, попробуйте оформить заказ заново.

Очистите кэш и cookies браузера

Кэш и cookies сохраняют данные посещаемых сайтов и данные аутентификаций, чтобы в будущем загружать веб-ресурсы быстрее. Если на ресурсе уже был статус ошибки 500, при повторном входе на сайт может загружаться старая версия страницы с ошибкой из кэша, хотя на самом деле страница уже работает. Очистить кэш и куки браузера вам поможет инструкция.

Если ни одно из этих действий не решило проблему, значит, некорректно работает сам сервер сайта. Вернитесь на страницу позже, как только владелец решит проблему.

Что делать, если вы владелец сайта

В большинстве случаев устранить проблему может только владелец сайта. Как правило, ошибка связана с проблемами в коде. Реже проблемы могут быть на физическом сервере хостинг-провайдера.

Ниже рассмотрим самые популярные причины и способы решения.

Ошибки в файле .htaccess

Неверные правила в файле .htaccess — частая причина возникновения ошибки. Чтобы это проверить, найдите .htaccess в файлах сайта и переименуйте его (например, в test). Так директивы, прописанные в файле, не повлияют на работу сервера. Если сайт заработал, переименуйте файл обратно в .htaccess и найдите ошибку в директивах. Если вы самостоятельно вносили изменения в .htaccess, закомментируйте новые строки и проверьте доступность сайта.Также может помочь замена текущего файла .htaccess на стандартный в зависимости от CMS.

Найти директиву с ошибкой можно с помощью онлайн-тестировщика. Введите содержимое .htaccess и ссылку на сайт, начиная с https://. Затем нажмите Test:


Произошла непредвиденная ошибка

На экране появится отчёт. Если в .htaccess есть ошибки, они будут выделены красным цветом:


500 ошибка nginx

Активирована устаревшая версия PHP

Устаревшие версии PHP не получают обновления безопасности, работают медленнее и могут вызывать проблемы с плагинами и скриптами. Возможно, для работы вашего веб-ресурса нужна более новая версия PHP. Попробуйте сменить версию PHP на другую по инструкции.

Установлены некорректные права на файлы и каталоги сайта

В большинстве случаев корректными правами для каталогов являются «755», для файлов — «644». Проверьте, правильно ли они установлены, и при необходимости измените права на файлы и папки.

Запущено максимальное количество процессов

На тарифах виртуального хостинга REG.RU установлены ограничения на количество одновременно запущенных процессов. Например, на тарифах линейки «Эконом» установлено ограничение в 18 одновременно запущенных процессов, на тарифах «+Мощность» ― 48 процессов. Если лимит превышен, новый процесс не запускается и возникает системная ошибка 500.

Такое большое число одновременных процессов может складываться из CRON-заданий, частых подключений с помощью почтовых клиентов по протоколу IMAP, подключения по FTP или других процессов.

Чтобы проверить количество процессов, подключитесь по SSH. Выполните команду:

ps aux | grep [u]1234567 |wc -l

Вместо u1234567 укажите ваш логин хостинга: Как узнать логин хостинга.

Чтобы посмотреть, какие процессы запущены, введите команду:

Вместо u1234567 укажите логин услуги хостинга.

Командная строка отобразит запущенные процессы:


Код ошибки 500

Где:

  • u1234567 — логин услуги хостинга,
  • 40522 — PID процесса,
  • S — приоритет процесса,
  • /usr/libexec/sftp-server — название процесса.

Процесс можно завершить командой kill, например:

Вместо 40522 укажите PID процесса.

Чтобы решить проблему, вы также можете:

  • увеличить интервал запуска заданий CRON,
  • ограничить количество IMAP-соединений в настройках почтового клиента. Подробнее в статье Ограничение IMAP-соединений,
  • проанализировать запущенные процессы самостоятельно или обратившись за помощью к разработчикам сайта.

Если вам не удалось самостоятельно устранить ошибку 500, обратитесь в техподдержку.

Скрипты работают слишком медленно

На каждом виртуальном хостинге есть ограничения на время выполнения скрипта. Если за установленное время скрипт не успевает выполниться, возникает ошибка сервера 500. Для решения проблемы обратитесь к разработчику сайта и оптимизируйте скрипты. Если оптимизировать нельзя, перейдите на более мощный вид сервера.

У пользователей VPS есть возможность увеличить максимальное использование оперативной памяти на процесс, но лучше делать скрипты меньшего размера.

Ошибка 500 на сайте, созданном на WordPress

WordPress предлагает много плагинов для создания хорошего сайта. Они значительно расширяют возможности CMS. Однако они же могут нарушать работу сайта и вызывать ошибку 500. Вызвать ошибку могут как недавно установленные плагины, так и старые.

Для начала проверьте, нужно ли обновить плагины. Часто устаревшие плагины перестают работать и вызывают проблемы работы сайта. Если все плагины обновлены, но 500 Internal Server Error остаётся, отключите все плагины, чтобы убедиться, что именно они мешают работе сайта. Как только станет понятно, что виноват один из плагинов, отключайте их по очереди, пока не найдёте тот, который нарушает работу сервера.


Как отключить плагин в WordPress

  1. 1.

  2. 2.

    Перейдите во вкладку «Плагины» ― «Установленные».

  3. 3.

    Нажмите Деактивировать у плагина, который, как вам кажется, повлиял на работу сайта:

Если все ваши действия не решили проблему или вы не уверены в своих технических знаниях, обратитесь к службе технической поддержки. Сообщите время обнаружения проблемы и опишите все действия, которые вы предприняли перед обращением. Специалисты сделают детальную проверку настроек вашего сайта и при необходимости обратятся к администраторам сервера на стороне хостинг-провайдера.

Отредактировано: 20 Ноября 2018

Файл .htaccess нужен для того чтобы иметь возможность переопределять базовые настройки web сервера Apache. Таких файлов на сайте может быть несколько. Каждый файл .htaccess распространяет свои правила на папки которые находятся на том же уровне в дереве ресурсов, или ниже, но не затрагивает каталоги в которых размещен другой файл .htaccess.

Стоит помнить, что обработка файлов .htaccess может быть запрещена в настройках веб-сервера, полностью или частично.

Не все операционные системы и программы позволяют создавать файл с точкой вначале, чтобы обойти это ограничение, можно создать обычный текстовый файл в notepad++ или другом доступном блокноте, и воспользоваться функцией «Сохранить как».

Синтаксис файлов .htaccess повторяет синтаксис главного файла конфигурации веб сервера, директивы так же аналогичны, только в сокращенном виде. 

Комментарии в файле — символ # проставленный в начале строки

# Эта строка будет проигнорирована веб-сервером

Если после редактирования или размещения .htaccess при обращении к сайту вы получили ошибку 500, то, скорее всего, в файле .htaccess допущена ошибка. Посмотреть её причины можно в файле error_log вашего сервера. 

Редиректы

Самая часто используемая функция .htaccess — Redirect. Эта директива сообщает браузеру о том, что по указанному адресу необходимо загрузить другую страницу, в простонародье — сделать редирект.

Простой редирект оформляют по схеме:

Redirect [статус] URL-путь-указанный-в-адресе URL-на-который-надо-переадресовать

Статус — необязательный параметр. Но часто он бывает важен для поисковых роботов. Возможные значения:

  • 301 / permanent — документ перемещен постоянно
  • 302 / temp — документ перемещен временно
  • 303 / seeother — смотрите другой
  • 410 / gone — убран

Подобный редирект не работает для адресов содержащих Query String (символы после ?). В таких случаях используют сочетание RewriteCond и RewriteRule.

  • RewriteCond — определяет условие при котором происходит преобразование
  • RewriteRule — правило для преобразования

Примеры редиректов

Перенаправить запросы со старого адреса страницы на новый

Redirect 301 /page.html http://www.domain.ru/new_page.html

Перенаправить все запросы к страницам сайта на аналогичные страницы другого сайта с использованием redirect

Redirect 301 / http://www.newdomain.ru/

Перенаправить все запросы к страницам сайта на аналогичные страницы другого сайта с использованием rewriteRule

RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.ru/$1 [R=301,L]

Перенаправить запросы на domain.ru с любого из синонимов сайта

RewriteEngine On
RewriteCond % !^domain.ru$ [NC]
RewriteRule ^(.*)$ http://domain.ru/$1 [L,R=301]

Перенаправить запросы на www.domain.ru с любого из синонимов сайта

RewriteEngine On
RewriteCond % !^www.domain.ru$ [NC]
RewriteRule ^(.*)$ http://www.domain.ru/$1[L,R=301]

Перенаправление всех запросов к странице /period/?test=123 на domain.ru

Options +FollowSymLinks
RewriteEngine On
RewriteCond % ^test=123$ [NC]
RewriteRule ^period/$ http://domain.ru/ [L,R=301]

 Со страниц без слеша на страницы со слешем

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)(?<!/)$ /$1/ [R=301,L]

C http на https (актуален для timeweb)

RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

Переопределение страниц ошибок

#401  Авторизация не выполнена
ErrorDocument 401 /401.html

#403  Доступ запрещен
ErrorDocument 403 /403.html

#404  Страница не найдена
ErrorDocument 404 /404.html

#500  Внутренняя ошибка сервера
ErrorDocument 500 /500.html

Ограничение доступа к сайту по IP

Запретить доступ к сайту с IP-адресов 123.4.5.6 и 123.5.4.3

Order Allow,Deny
Allow from all
Deny from 123.4.5.6 123.5.4.3

Запретить доступ к сайту со всех адресов кроме 123.4.5.6 и 123.5.4.3:

Order Deny,Allow
Deny from all
Allow from 123.4.5.6 123.5.4.3

Запретить доступ к сайту для всех:

Deny from all

Запрет доступа к некоторым файлам

К файлам с расширением .cfg

<FilesMatch ".(cfg)$">
Order allow,deny
Deny from all
</FilesMatch>

Закрыть директорию паролем

AuthType Basic
AuthName "Some Name"
AuthUserFile /home/uXXXXX/.htpasswd
require valid-user 

Путь /home/uXXXXX/.htpasswd обозначает полный путь к файлу паролей на диске сервера.

Файл с паролями должен содержать строки вида login:password. Пароль должен быть зашифрован с использованием алгоритма MD5. Один из способов создать такой файл — воспользоваться программой, входящей в поставку Apache — htpasswd 

Переопределение главной страницы сайта (индексного файла каталога)

Сделать главной страницей файл menu.html:

DirectoryIndex menu.html

MIME типы файлов

Чтобы понять, какие документы надо показывать как html, какие как графику, а к каким надо выдать меню, позволяющее сохранить файл на диск, браузер использует MIME типы.

MIME типы описывается набором символов, отражающим тип используемых данных. Например, файлам с расширением .html соответствует тип text/html. В ответ на пришедший запрос html-файла сервер возвращает заголовок Content-type: text/html. Браузер, получив такой заголовок, знает, что документ с типом данных text/html это обычная веб-страница на языке HTML. 

Все доступные MIME типы

Пример распространенных MIME типов данных

 Описание данных

Расширение файлов

MIME type

Картинки gif

gif

image/gif

Картинки jpeg

jpeg jpg jpe

image/jpeg

VRML-файлы

wrl vrml

model/vrml

HTML-документ

html htm

text/html

Обычный текст

asc txt

text/plain

Архив ZIP

zip

application/zip

Файл MS Word

doc

application/msword

Файл MS Excel

xls

application/vnd.ms-excel

Файл MS Power Point

ppt

application/vnd.ms-powerpoint

Файл Adobe Acrobat

pdf

application/pdf

Flash-документ

swf

application/x-shockwave-flash

Добавление MIME типов файлов

Периодически появляются новые MIME типы, которые не известны веб серверам, соответственно, в этом случае браузеры не смогут понять как обрабатывать указанный объект. Чтобы исправить эту проблему новые MIME типы надо добавить в настройках сервера или в файле .htaccess. Так же это пригодиться в случае если надо переопределить базовый MIME тип для уже известного расширения. 

Файлы заканчивающиеся на / будут открываться как html:

AddType "text/html" /

Переопределение кодировки

AddType "text/html; charset=koi8-r" .html .htm .shtml

Назначить расширению действие

AddHandler 

Отключить принудительную выдачу заголовка с кодировкой

При этом соответствующая кодировка должна быть прописана на каждой html-странице в виде тега 

<http-equiv=»Content-type» content=»text/html; charset=windows-1251″ />

AddDefaultCharset Off

Включение обработки PHP в .html-файлах

RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml

Выдача листинга каталога 

Запрет выдачи листинга каталога

С настройками по умолчанию, Apache, в случае отсутствия в папке главной страницы (индексного файла), при обращении без указания конкретного имени файла в запросе выдаст список всех файлов, находящихся в каталоге. Для того чтобы запретить отображение листинга каталога, достаточно добавить в файл .htaccess строку:

Options -Indexes

Разрешение выдачи листинга каталога

Options +Indexes

# если возникла проблема с кодировкой, ее можно определить добавив
Charset=UTF-8

Включить выполнение CGI-скриптов в папке docs для файлов с расширениями .cgi, .pl. .py

В папке c CGI-скриптами необходимо разместить файл .htaccess с содержимым:

AddHandler cgi-script .cgi .pl .py
Options +ExecCGI

Скрипт должен иметь атрибут исполнения (+x, права доступа, начинающиеся с 7, например, 755).

Блокировка переходов со сторонних ресурсов

Для запрета перехода c baddomain.ru на domain.ru добавьте в .htaccess следующее:

RewriteEngine on
RewriteCond % baddomain.ru [NC]
RewriteRule .* - [F]

Если требуется запретить переходы с нескольких доменов, то используйте такие директивы

RewriteEngine on
RewriteCond % baddomain.ru [NC,OR]
RewriteCond % baddomain2.ru [NC,OR]
RewriteCond % baddomain3.ru [NC]
RewriteRule .* - [F]

Включение передачи заголовка Last-Modified для файлов .htm .html

Если не передается заголовок Last-Modified но по какой-либо причине он нужен, то включить его можно следующим параметром

RemoveHandler .html. .htm

Кириллические домены

(.РФ, .МОСКВА и др.)

В файле .htaccess использование кириллицы не допускается. При составлении правил перенаправления для кириллических доменов необходимо указывать имя домена в punycode. Узнать имя домена в punycode можно с помощью сервиса Whois.

Например, для перенаправления site.ru на caйт.рф нужно воспользоваться следующим правилом:

RewriteEngine on
RewriteCond % ^www.site.ru [NC]
RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai /$1 [R=301,L]

При этом посетители могут увидеть именно punycode-представление доменного имени в адресной строке браузера. Это не является ошибкой.

Полезные ссылки

Руководство по mod_rewrite

Модуль mod_alias

Страницу с кодом ответа 500 веб-сервер возвращает, когда не может обработать запрос из-за ошибок в файлах сайта.

Внешний вид ошибки 500 зависит от того, чем она вызвана. При неполадках в скриптах сайта отобразится пустая страница, сообщение HTTP ERROR 500 или текст обработчика PHP.

Если проблема в файле .htaccess — сообщение Internal Server Error.

Часто ошибку 500 можно легко устранить даже не имея знаний в области веб-разработки. О том, как это сделать, расскажем далее.

Ошибки в файле .htaccess

Сообщение Internal Server Error выводится, когда в файле .htaccess есть ошибки. Переименуйте файл .htaccess и проверьте корректность работы сайта. Если он доступен, удалите правила, которые были добавлены последними, или восстановите старый файл из резервной копии.

Ошибки в скриптах сайта

Пустая страница — не всегда признак ошибки 500. Поэтому в первую очередь узнайте код ответа, с которым она открывается. Это можно сделать при помощи инструментов разработчика в браузерах.

Инструменты разработчика — функция для исследования работы сайта. Она позволяет узнать время ответа сервера, код ответа, посмотреть текст возникших ошибок и многое другое.

Нажмите сочетание клавиш Ctrl+Shift+I или используйте меню браузера:

  • Mozilla Firefox — «Веб-разработка» → «Инструменты разработчика»;
  • Google Chrome — «Дополнительные инструменты» → «Инструменты разработчика»;
  • Opera — «Разработка» → «Инструменты разработчика».

Перейдите во вкладку «Сеть (Network)». На ошибку 500 указывает соответствующее число в колонке «Статус».

Статус пустой страницы может быть и 200 (Ok). В таком случае проверьте, есть ли содержимое в индексном файле сайта, очистите кеш вашей CMS. Если ранее сайт работал корректно, восстановите его из резервной копии.

Вывод ошибок на сайте

Вывод ошибок PHP на хостинге по умолчанию выключен. Чтобы увидеть их текст, добавьте в файл .htaccess правило: php_value display_errors 1 и обновите страницу сайта.

Если текст не отобразился, включите вывод ошибок через конфигурационный файл CMS. Он расположен в корневой директории сайта.

WordPress

Замените в файле wp-config.php строку define(‘WP_DEBUG’, false); на define(‘WP_DEBUG’, true);

Joomla

Измените значение переменных debug и error_reporting в configuration.php на: public $debug = '1'; и public $error_reporting = 'maximum';

1С-Битрикс

В конфигурационном файле по пути ~/public_html/bitrix/php_interface/dbconn.php замените значение переменных DBDebug и DBDebugToFile на: $DBDebug = true; и $DBDebugToFile = true;

Laravel

В файле .env измените APP_DEBUG=false на APP_DEBUG=true

Алгоритм устранения ошибки можно найти в интернете, поместив ее текст в строку любой поисковой системы. Если с помощью найденной информации возобновить работу сайта не получится, восстановите его из резервной копии. Наши специалисты могут помочь с восстановлением. Для этого направьте обращение из раздела «Поддержка» Панели управления.

Журнал ошибок PHP

Иногда ошибка не выводится на странице или возникает периодически: ее тяжело отследить. Чтобы узнать текст таких ошибок, записывайте информацию о них в файл — журнал ошибок PHP. Подключите его, добавив в .htaccess строку: php_value error_log /home/username/domains/domain.ru/php_errors.log и обновите страницу сайта.

Откройте создавшийся файл журнала с помощью Файлового менеджера в Панели управления. Чтобы просматривать возникающие ошибки в реальном времени, отметьте опцию «Включить автообновление».

Быстро возобновить работу сайта можно, восстановив его из резервной копии за дату, когда ошибок не было. Если восстановление нежелательно, обратитесь к разработчику.

Для устранения некоторых ошибок не требуется специальных знаний. Рассмотрим самые распространенные.

Нехватка оперативной памяти

Ошибка с текстом Allowed memory size возникает из-за нехватки оперативной памяти для выполнения скрипта: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 81 bytes) in /home/username/domains/domain.ru/public_html/somescript.php

Чтобы исправить ее, увеличьте лимит оперативной памяти, добавив в файл .htaccess директиву:

php_value memory_limit 512M

Вместо «512» укажите необходимый объем памяти. Максимальное значение ограничивается тарифом.

Текст Out of memory означает, что достигнут лимит оперативной памяти по тарифному плану:

PHP Fatal error: Out of memory (allocated 39059456) (tried to allocate 262144 bytes) in /home/username/domains/domain.ru/public_html/somescript.php

Оптимизируйте работу скриптов, чтобы они потребляли меньше памяти. Объемную загрузку или выгрузку данных производите частями. Если оптимизацию произвести невозможно, измените тариф на тот, по которому предоставляется достаточно памяти для комфортной работы сайта.

Ошибки в CMS

При обновлении CMS случаются синтаксические ошибки:

PHP Parse error: syntax error, unexpected '[', expecting ')' in /home/username/domains/domain.ru/public_html/wp-content/plugins/wordpress-23-related-posts-plugin/config.php on line 130

Это происходит из-за того, что новые функции CMS не поддерживают устаревшие версии PHP. Чтобы исправить ошибку, измените версию PHP для сайта на более современную в разделе «Сайты» → «Веб-серверы».

Если предыдущая рекомендация не помогла, обратите внимание на путь до неработающего скрипта: там может быть указан каталог плагина или темы. Чтобы исправить ошибку, отключите их. Для этого переименуйте папку, в которой они расположены. После устранения ошибки авторизуйтесь в административной части сайта и измените тему или переустановите плагин.

Чтобы исправить большинство ошибок PHP, достаточно изучить их текст и принять меры, указанные в статье. Если вам не удается справиться с ней самостоятельно, обратитесь в службу поддержки.

Была ли эта инструкция полезной?

Like this post? Please share to your friends:
  • Htaccess 404 error
  • Hsync error xerox 3550
  • Hsts как исправить
  • Hsk automatic ban как исправить
  • Hryfine ошибка подключения