URL重写而不更改URL .htaccess

Sto*_*per 5 apache .htaccess mod-rewrite url-rewriting url-redirection

我想重写我的网址

从:

https://example.com/fr/transporter/transporterPublicProfile.php?profil=1927
Run Code Online (Sandbox Code Playgroud)

至:

https://example.com/fr/profil-des-transporteurs/1927
Run Code Online (Sandbox Code Playgroud)

当用户访问此URL时:

https://example.com/fr/transporter/transporterPublicProfile.php?profil=1927
Run Code Online (Sandbox Code Playgroud)

看起来应该是这样的:

https://example.com/fr/profil-des-transporteurs/1927
Run Code Online (Sandbox Code Playgroud)

如果用户访问此网址:

https://example.com/fr/profil-des-transporteurs/1927
Run Code Online (Sandbox Code Playgroud)

它应保持原样.

到目前为止我尝试过的是:

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

它会根据需要更改URL,但问题是,该页面上的链接无法正常工作.页面使用图像的相对路径等新URL,即:

https://example.com/fr/profil-des-transporteurs/
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 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]
Run Code Online (Sandbox Code Playgroud)

然后,为了解析用于 images/js/css 路径的相对链接,您可以将其添加到<head>页面 HTML 部分:

<base href="/fr/transporter/" />
Run Code Online (Sandbox Code Playgroud)