显示规范的重写 URL 并隐藏动态 URL

Display canonical rewritten URLs and hide dynamic ones

我尝试了无数东西,但我找不到一种方法来在浏览器 URL 栏中显示重写的 URL 而不是具有 3 个 get 参数的那个。

我的 "ugly" URL :

http://example.com/archive.php?id=tt2131523&date=20131004&title=graceland

"pretty"URL我需要显示:

http://example.com/tt2131523-20131004-graceland.html

这是我的 .htaccess 文件:

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule .* http://%1%{REQUEST_URI} [R=301]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule .* https://%1%{REQUEST_URI} [R=301]

RewriteRule ^([^-]*)-([^-]*)-([^-]*)\.html$ /archive.php?id=&date=&title= [NC,L]

我的其他 PHP 文件服务于 "ugly" 链接,链接有效但 URLs 仍然 "ugly"。 "prettyfied" 版本未显示。

如果我在浏览器中键入 "pretty" URL,重写会成功,我会访问该页面。

我希望,即使用户键入 "ugly" 版本,他也会被重定向到 "pretty" 版本。

我是否需要更改我的链接结构(在其他 php 文件中)并使它们直接指向 URL 的重写版本,或者在 .htaccess 中是否有办法显示重写后的版本 ?

顺便问一下,旗子还好吗?

谢谢。

你可以使用这个:

RewriteEngine On
RewriteCond %{THE_REQUEST} /archive\.php\?id=([^&]+)&date=([^&]+)&title=([^\s]+) [NC] 
RewriteRule ^ /%1-%2-%3.html? [NC,R,L]
RewriteRule ^([^-]+)-([^-]+)-([^.]+)\.html$ /archive.php?id=&date=&title= [QSA,L,NC]