RewriteRule,url错误显示

时间:2011-11-15 10:33:06

标签: apache .htaccess mod-rewrite

我是mod_rewrite的新手,我遇到了这个问题:

我有一个使用mod_rewrite的工作重定向,我的.htaccess:

RewriteEngine on
RewriteRule ^microsite/([^/\.]+)/$ micrositecontroller.php?name=$1 [L]

micrositecontroller.php只回显文本

在我输入网址时在浏览器上:

  

本地主机/项目/微型/测试/

我被重定向到想要的地方,但是当我进入时:

  

本地主机/项目/微型/测试

它仍然会重定向到想要的位置,但URL会变成这样:

  

本地主机/项目/微型/测试/?名称=测试

现在我想要的是跟踪“/?name = test”不显示。

我尝试了正则表达式的不同组合,但无济于事,我不知道它是否正常。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你的正则表达式中有一个斜杠,所以你的正则表达式处理斜杠...只需删除它:

RewriteEngine on
RewriteRule ^microsite/([^/\.]+)$ micrositecontroller.php?name=$1 [L]

答案 1 :(得分:0)

你想要的是:

RewriteEngine on
RewriteRule ^microsite/([^/\.]+)/?$ micrositecontroller.php?name=$1 [L]
# Note the "?"-------------------^

以两个斜杠结尾并且没有斜杠。将斜杠保持打开(或关闭)的问题是apache强制浏览器重定向,从而使?name=test显示在浏览器的位置栏中。

这是因为mod_dir和DirectorySlash on指令存在干扰。 DirectorySlash指令告诉apache在访问看起来像目录的东西时重定向浏览器(在你的情况下是localhost/project/microsite/test到smae URI,除了有一个斜杠。