2010-11-14 116 views
1

我正在开发一个基于MVC的应用程序,现在我已经设置了.htaccess重写规则。不过,我有问题要让所有内容都显示正确。 这是我的.htaccess:mod_rewrite和链接问题

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

我遇到的链接作为第一个问题的URL就像“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”,并且它不是我不打算这样工作。

我无法使用绝对路径,因为该软件的下载对象很容易安装,而且我无法知道用户将安装此软件的位置,也不希望用户必须修改代码的任何内容。

在先进的感谢,

伊万

回答

0

我终于解决了这个问题。

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

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