2010-06-28 114 views
2

我有一个看起来像这样的超链接:如何让浏览器在重写时显示干净的URL?

http://domain.com/sample/comments/65 

当我点击它,它进入这个:

http://domain.com/sample/comments/index.php?submissionid=65 

我使用重写规则,使之做到这一点。这是我想要的,除了我还希望浏览器中显示的URL仍然看起来像“http://domain.com/sample/comments/65”。

我该怎么做? .htaccess文件显示在下面。

RewriteEngine on 
RewriteRule ^comments/([0-9]+)?$ http://domain.com/sample/comments/index.php?submissionid=$1 [NC,L] 

由于提前,

约翰

回答

1

您必须删除部分http://domain.com/sample/,否则将强制重定向:

RewriteEngine on 
RewriteRule ^comments/([0-9]+)?$ comments/index.php?submissionid=$1 [NC,L,B] 

B标志也是必要的,因为你”重新使用查询字符串内的反向引用,这需要转义。

manual说(重点煤矿):

当使用.htaccess中的重写引擎文件的每个目录前缀(始终是为特定的目录相同)是模式匹配自动删除并在替换完成后自动添加。这个功能对于许多重写都很重要;没有这个,你总是必须匹配父目录,这并不总是可能的。 有一个例外:如果替换字符串以http://开头,则不会添加目录前缀,并且外部重定向(或使用标志P时的代理吞吐量)被强制为。有关更多信息,请参阅RewriteBase指令。

只要请求主机和重写规则中的主机相匹配,如果将重写规则放在虚拟主机或主配置中,则不会出现这种情况。