mod_rewrite和链接有问题

时间:2010-11-14 18:41:51

标签: mod-rewrite

我正在开发一个基于MVC的应用程序,现在我已经设置了.htaccess重写规则。但是,我遇到了让一切看起来都正确的问题。 这是我的.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?a=$1 [L,NS]

我遇到链接问题,因为最初的网址类似于“domain.com/folder/index.php?a=whatever/whatever2/asd”,但现在它们是“domain.com/folder/whatever” / whatever2 / ASD”。

我正在生成类似“<a href='index.php?a=new/qwerty'>Qwerty</a>”的链接,但现在当我尝试生成链接时,我必须执行类似“<a href='new/qwerty'>Qwerty</a>”的操作,并猜猜是什么?例如,如果我在“domain.com/folder/new/lol”上点击那种链接,我将被重定向到“domain.com/folder/new/new/qwerty”并且它不是不应该那样工作。

我无法使用绝对路径,因为该软件对于下载它的用户来说易于安装,我不知道用户将在何处安装此软件,也不希望用户必须修改任何代码。

先谢谢了,

伊万

1 个答案:

答案 0 :(得分:0)

我终于解决了它。

我创建了自己的链接生成器函数,我从$ _SERVER ['SCRIPT_NAME']中删除了index.php部分(它为我们提供了脚本的绝对路径)。 如果您有多个脚本,只需从该特殊变量中删除所有可能的脚本。

function url($rel_path) {
  $start = str_replace("index.php", "", $_SERVER['SCRIPT_NAME']);
  return $start.$rel_path;
}