5

Я хочу, чтобы переписать мой URLURL переписывания без изменения URL .htaccess

От:

https://example.com/fr/transporter/transporterPublicProfile.php?profil=1927 

To:

https://example.com/fr/profil-des-transporteurs/1927 

Когда-либо пользователь посещает этот URL :

https://example.com/fr/transporter/transporterPublicProfile.php?profil=1927 

Он должен выглядеть следующим образом:

https://example.com/fr/profil-des-transporteurs/1927 

И если пользователь посетить этот URL:

https://example.com/fr/profil-des-transporteurs/1927 

Его должно оставаться как есть.

То, что я пытался до сих пор:

RewriteRule ^profil-des-transporteurs/(.*)$ /fr/transporter/profil.php?oid=$1 [L] 

Он изменяет URL, как я хочу, но проблема заключается в том, что ссылки на этой странице не работает должным образом. Страница используют относительные пути для изображений и т.д. WRT нового URL, а именно:

https://example.com/fr/profil-des-transporteurs/ 
+1

Положите '[R = 301, L]' в конец. – hjpotter92

+0

Он изменяет URL-адрес, а также перенаправляет полностью на новый URL-адрес – StormTrooper

ответ

3

Вы можете использовать этот код в файле DOCUMENT_ROOT/.htaccess:

RewriteEngine On 
RewriteBase/

# external redirect from actual URL to pretty one 
RewriteCond %{THE_REQUEST} \s/+fr/transporter/transporterPublicProfile\.php\?profil=([^\s&]+) [NC] 
RewriteRule^fr/profil-des-transporteurs/%1? [R=302,L,NE] 

# internal forward from pretty URL to actual one 
RewriteRule ^fr/profil-des-transporteurs/([^/.]+)/?$ fr/transporter/transporterPublicProfile.php?profile=$1 [L,QSA,NC] 

Тогда для разрешения относительных ссылок, используемых для изображений/JS/CSS путей вы можете добавить это в <head> разделе HTML вашей страницы:

<base href="/fr/transporter/" /> 
+0

, почему на DOCUMENT_ROOT я могу поместить файл htaccess в папку подкаталога 'fr'? –

+0

, пожалуйста, скажите, какая настройка требуется в правилах выше htaccess, если реальный каталог fr? Я хочу разместить файл htaccess в подкаталоге 'fr'. –

+0

Я не могу изменить этот ответ в ответ на комментарий, лучше вы создадите новый вопрос, чтобы я мог опубликовать ответ. – anubhava

2

Вы можете использовать базовый тег в вашем HTML, так что все пути будут относиться к нему

<base href="https://example.com/fr/transporter/"> 
+0

. Для получения дополнительной информации, [этот ответ] (https://stackoverflow.com/questions/1889076/is-it-recommended-to-use-the-base-html -tag) должен быть полезен – kero

+0

После добавления Base Tag я пробовал этот URL: https://example.com/fr/profil-des-transporteurs/1927 Он выглядел следующим образом: https://example.com /fr/transporter/transporterPublicProfile.php Это фактически решило проблему с моими изображениями, но URL-адрес был таким же, как у оригинала – StormTrooper

Смежные вопросы