mod_rewrite 主页上不显示'index/'的规则 - PHP



我看过很多关于这个主题的文章,但我似乎无法让这个东西像我想要的那样工作。。。

我有这个.htaccess文件:

RewriteEngine on
RewriteRule ^([^/]+)/$ $1.php

一切似乎都很顺利。当我去的时候,例如

localhost/website

的内容

localhost/website/index.php

显示。这是意料之中的事。我的链接在PHP中的变量中,如下所示:

$home = 'index/'
$contact = 'contact/'

等等…

然后我转到其他链接,点击一下,然后点击主页链接,URL现在是这样的:

localhost/website/index/

这就是我的href所指向的,所以它是意料之中的。。。但我真的希望它是:

localhost/website

那么,我如何使用变量$home = '';而不是$home = index/';来获得上面想要的内容呢?我觉得我错过了.htaccess文件中应该包含的内容。

我想我还应该提到,我的导航工作方式是,我有一个PHP循环,它检查当前页面,以保持其图形高亮显示,而不是不高亮显示。

这个循环检查页面变量,例如$home$contact,如果它们等于一个充满页面变量的数组中的键值,那么它将使用高亮显示的链接集:这就像你所在的页面上有浅色按钮一样。

这里的问题是,对于索引页,我使用'index/',但我想使用'',但这似乎不起作用。它在条件检查'index/'时工作,但在检查空字符串('')时不工作。

编辑

以下是一些可能对我的情况有所帮助的附加代码片段:

// Navigation links
$home           =   '';
$contact_us     =   'contact/';
// Button array
$page_nav_lt = array(
$home           =>  $home_but_lt,
$contact_us     =>  $contact_but_lt
);
// Loop conditional (it's _alt below because it's a function in a class)
if ($current_page == $key) {
$menu_output .= $image_dir . $ds . $page_nav_alt[$key];
$menu_output .= '" id="alt" class="data-id-yes';
}

您可以使用$home = '';,并将其添加到.htaccess:中

DirectoryIndex index.php index.html

我包括了index.html作为一个例子,但你可以有任意多的默认文件名,它会按顺序检查它们。

编辑:您可以测试home为",但<a href="">将仅指向当前页面。通常,要链接到主页,您需要链接到"/",它指向服务器的根目录。由于您的站点在子目录中进行测试,因此您希望它为"/site/"。通过将$root变量设置为"/site",然后在将网站移动到根目录时将其更改为",可以使链接在不同的环境中工作。然后你的链接将看起来像"/site/"one_answers"/site/contact"。

最新更新