Apache 如何使浏览器在重新写入时显示干净的URL?

Apache 如何使浏览器在重新写入时显示干净的URL?,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我有一个超链接,看起来像这样: http://domain.com/sample/comments/65 当我点击它时,它会变成这样: http://domain.com/sample/comments/index.php?submissionid=65 我正在使用重写规则让它这样做。这就是我想要的,除了我还希望浏览器中显示的URL看起来仍然像“ 我该怎么做?.htaccess文件显示在下面 RewriteEngine on RewriteRule ^comments/([0-9]+)?$

我有一个超链接,看起来像这样:

http://domain.com/sample/comments/65
当我点击它时,它会变成这样:

http://domain.com/sample/comments/index.php?submissionid=65
我正在使用重写规则让它这样做。这就是我想要的,除了我还希望浏览器中显示的URL看起来仍然像“

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

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


John

您必须移除零件
http://domain.com/sample/
,否则将强制重定向:

RewriteEngine on
RewriteRule ^comments/([0-9]+)?$ comments/index.php?submissionid=$1 [NC,L,B]
B
标志也是必需的,因为您正在查询字符串中使用backreference,这需要转义

(我的)重点说:

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

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