Назад | Перейти на главную страницу

Серверные перезаписи больше не работают

Я без проблем использовал приведенные ниже серверные команды в своем файле .htaccess в течение нескольких месяцев, но вчера, неожиданно, всякий раз, когда я пытался перейти с домашней страницы веб-сайта на другие страницы или пытался перемещаться по Magento Страницы настроек администратора, у меня почти пустой экран со словами «Не указан входной файл». Я заглянул в консоль браузера и обнаружил ошибку как "Не удалось загрузить ресурс: сервер ответил статусом 404 ()".

После некоторого исследования я определил, что это было вызвано командами перенаправления в файле public_html / .htaccess.

Я добавил перенаправление по настоянию Magento, чтобы конфиденциальные файлы Magento не были доступны для "общественности" для просмотра / использования. (Я никоим образом не использую хостинг или серверы GoDaddy). Я получил команды перенаправления с веб-страницы BlueHost или DreamHost.

Я пробовал добавить "?" и удаление "/" из некоторых команд, но это показывает только новую ошибку.

Я также закомментировал команды перенаправления, которые позволяют мне перемещаться по всему веб-сайту и страницам настроек администратора Magento.

Может ли кто-нибудь указать мне правильные направления для того, какие команды мне нужно использовать, чтобы перенаправления работали правильно, и руководство (-я) относительно того, что делают команды .htaccess?

Большое спасибо.

RewriteBase /public_html/pub

# Rewrites all URLs without pub in them
RewriteCond %{REQUEST_URI} !^/pub/

# Rewrites all URLs
RewriteCond %{HTTP_HOST} ^(www\.)?abc\.

# Rewrite all those to insert /folder
RewriteRule ^(.*)$ /pub/$1 [L]

Каким-то чудом божьим мой рерайт месяцами работал нормально (новичок по незнанию). Но теперь, как раз перед тем, как начать свой бизнес в электронной коммерции, Он помог мне найти ошибки. Теперь выясним, что не так с моими таблицами MySQL.

В моем исходном коде отсутствовали некоторые важные элементы.

Ниже представлен рабочий «код», и как он должен выглядеть:

RewriteBase /public_html/pub

# Rewrites all URLs without pub in them
RewriteCond %{REQUEST_URI} !^/pub/$

# Rewrites all URLs  # I originally used "abc" instead of my domain name
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]  

# Rewrite all those to insert /folder
RewriteRule ^(.*)$ /pub/$1 [L]

Вот что означают указанные выше элементы:

! = negative/don't/not

\ = escape character

(.*) appears to be a wilcard to get all URL to go to the %{HTTP_HOST} rewritten location

NC = Case insens​itive, that is not case sensitive

L = Last (end of line/commands)- stop processing rules

^  = Start of the string

$ = End of the string

%{HTTP_HOST} = one of a few HTTP Headers

%{REQUEST_URI} = a kind of a special server variable that makes a request

1 appears to be shorthand for 301 which means "Moved perman​ently" as in rewrite these things permanently

? appears to be a URL break point, a domain name signifier, a subdirectory marker, or all of the above

Я нашел здесь чит-набор с этими и другими командами: http://www.cheatography.com/davechild/cheat-sheets/mod-rewrite

Я надеюсь, что все это поможет другим новичкам в перезаписи.

Спасибо всем.