url重写.htaccess的问题

Posted

技术标签:

【中文标题】url重写.htaccess的问题【英文标题】:problem with url rewrite .htaccess 【发布时间】:2011-07-30 21:02:24 【问题描述】:

我正在用 php 编写一个 mvc 框架,并尝试使用这种模式重写 url:

www.example.com/contact/send/

读作

www.example.com/index.php?url=contact/send/

所以我可以分解 $_GET['url'] 变量并用于 fw 进行路由。

它几乎在任何情况下都很好用,唯一的问题是,当我尝试使用一个也是文件夹的字符串时,ak 'admin',没有尾随斜杠,url 暴露变量。

像这样:

www.example.com/admin/ - 好的,网址保持原样

www.example.com/admin - 这是问题所在,url 将浏览器重定向到:

www.example.com/admin/?url=admin

$_GET['url'] 在这两种情况下都已设置并且工作正常,但我不希望公开 'url=admin'。

有什么办法吗?

谢谢!

.htaccess 是:

重写引擎开启

RewriteCond %SCRIPT_FILENAME !-f RewriteCond %REQUEST_FILENAME !-f

RewriteCond %SCRIPT_FILENAME -d RewriteCond %REQUEST_FILENAME -d

重写规则 ^(.*)$ index.php?url=$1 [PT,L]

【问题讨论】:

【参考方案1】:

我认为你错过了一个! :

RewriteCond %REQUEST_FILENAME !-d

当它不是目录时你想重写。

编辑:或者可能是个例外

RewriteCond %REQUEST_URI !^/admin/?

【讨论】:

以上是关于url重写.htaccess的问题的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 重写一个 url,而不是另一个

.htaccess 中的多个连字符处理(URL 重写)

重写 .htaccess 中子目录的 url

从 Apache (.htaccess) 到 IIS 问题的 URL 重写

.htaccess URL 重写挑战

.htaccess 用问号重写 URL