【发布时间】:2015-08-01 13:56:16
【问题描述】:
我尝试了无数的东西,但我找不到在浏览器 URL 栏中显示重写的 URL 而不是具有 3 个获取参数的 URL。
我的“丑陋”网址:
http://example.com/archive.php?id=tt2131523&date=20131004&title=graceland
我需要显示的“漂亮”网址:
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 仍然“丑陋”。不显示“美化”版本。
如果我在浏览器中键入“漂亮”的 URL,则重写工作并访问该页面。
我希望这样,即使用户键入“丑陋”的版本,他也会被重定向到“漂亮”的版本。
我是否需要更改我的链接结构(在其他 php 文件中)并使它们直接指向 URL 的重写版本,或者 .htaccess 中是否有显示重写版本的方法?
顺便问一下,旗帜还好吗?
谢谢。
【问题讨论】:
-
您想添加一个重写条件,如果 URI 传递查询值,则将页面重定向到“漂亮”版本之前,然后使用重写规则处理漂亮版本你在上面提供了。这个条件应该是一个新的条件,并且放在你已有的重写规则之上。
-
好的,谢谢马丁。它会是什么样子?
-
你的htaccess在根目录吗?
-
是的@Starkeen 为什么?
标签: php apache .htaccess mod-rewrite url-rewriting