#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 » />, верно?