URL重写而不更改URL .htaccess

时间:2014-12-19 14:38:21

标签: apache .htaccess mod-rewrite url-rewriting url-redirection

我想重写我的网址

发件人:

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

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

当用户访问此网址时

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

它应该如下所示:

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

如果用户访问此网址:

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

它应该保持不变。

到目前为止我尝试的是:

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

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

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

2 个答案:

答案 0 :(得分: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]

然后,要解析用于images / js / css路径的相对链接,可以在页面的HTML的<head>部分添加:

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

答案 1 :(得分:2)

您可以在html中使用基本标记,因此所有路径都相对于它

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