我已经尝试了无数种方法,但是找不到在浏览器URL栏中显示重写的URL的方法,而不是显示带有3个get参数的URL的方法。
我的“丑陋”网址:
http://example.com/archive.php?id=tt2131523&date=20131004&title=graceland
我需要显示的“漂亮” 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=$1&date=$2&title=$3 [NC,L]
我的其他PHP文件均提供“丑陋”链接,但这些链接有效,但URL仍为“丑陋”。不显示“ prettyfied”版本。
如果我在浏览器中键入“漂亮” URL,则重写工作正常,并且可以访问该页面。
我希望,即使用户键入“丑陋”的版本,他也将被重定向到“漂亮”的版本。
我是否需要更改链接结构(在其他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=$1&date=$2&title=$3 [QSA,L,NC]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句