Ошибка правил перезаписи URL: запрошенный URL-адрес не был найден на этом сервере

#php #.htaccess #url #url-rewriting

Вопрос:

Я создаю правила в .htaccess файле в папке моего домена.

Мой URL-адрес на сервере :

https://www.everyoneknows.com.my/customer/?loc=dashboard

И я хочу изменить URL на:

https://www.everyoneknows.com.my/customer/dashboard/

В файле .htaccess я пишу, что правила:

 RewriteEngine On

RewriteCond %{HTTP_HOST} ^everyoneknows.com.my [OR,NC] 
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.everyoneknows.com.my/$1 [R,L]

##External redirect to /customer/dashboard url rules here.
RewriteCond %{QUERY_STRING} ^loc=dashboard$
RewriteRule ^customer/$ https://www.everyoneknows.com.my/customer/dashboard/? [R=301,L]
 

И отображается сообщение об ошибке:

 Not Found
The requested URL was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
 

изображение

Надеюсь, кто-нибудь сможет подсказать мне, как исправить мои правила перезаписи URL. Спасибо.

Исходный результат:

введите описание изображения здесь

Обновлено 1

введите описание изображения здесь

Ответ №1:

Вам нужно правило перенаправления старого URL-адреса на новый и внутреннее правило перезаписи для обработки красивого URL-адреса:

 RewriteEngine On

RewriteCond %{HTTP_HOST} ^everyoneknows.com.my [OR,NC] 
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://www.everyoneknows.com.my%{REQUEST_URI} [R=301,NE,L]

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} s/ (customer)/?loc=([^samp;] ) [NC]
RewriteRule ^ /%1/%2/? [R=301,L,NE]

# internal forward from pretty URL to actual one
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(customer)/([w-] )/?$ $1/?loc=$2 [L,QSA,NC]
 

Предполагается, что в подкаталоге нет .htaccess customer/ . Перед тестированием этого изменения обязательно очистите кэш вашего браузера.

Комментарии:

1. Спасибо за ваш ответ. Ваш ответ может перенаправить страницу, но почему страница css и jquery не включены. Вы можете увидеть в моем вопросе обновлено 1.

2. Это связано с использованием относительных URL-адресов для этих ресурсов. Чтобы исправить это, вы можете добавить этот <head> тег чуть ниже HTML-кода вашей страницы: <base href="/" />

3. Этот тег <base href=»/» /> на какую страницу мне нужно поместить? Поместить в файл .htaccess?

4. Как я уже писал в своем комментарии, он должен быть размещен в исходном коде php / HTML вашей страницы чуть ниже <head> тега .

5. Хорошо, спасибо. Поэтому в теге between head я добавляю <базовый href=» everyoneknows.com.my » />, верно?