我看过很多关于这个主题的文章,但我似乎无法让这个东西像我想要的那样工作。。。
我有这个.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"。