我网站的主要导航编码如下:
<li><a href="index.php?pageID='.$key.'">'.$value.'</a></li>'."\n";
但我希望链接的网址看起来像domain.co.nz/pagename
,而不是domain.co.nz/index.php?pageId=pagename
你会如何推荐我做到这一点?
答案 0 :(得分:1)
这样的事情应该有效:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?pageID=$1
第一行打开mod_rewrite。第二行将基本URL设置为/(这很烦人,但您必须将其设置为您正在处理的基本路径)。第三行和第四行确保请求不作为文件或目录存在。最后一行是真正的魔力;基本上它搜索“任何东西”,捕获它在$ 1中找到的东西,并“重写”到index.php的URL?pageID = $ 1。如果你学习使用正则表达式,你也可以做更复杂的事情。
答案 1 :(得分:0)
是的,您可以使用.htaccess RewriteRule来完成此操作。在.htaccess文件中,包括:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?pageId=$1
这意味着:
如果REQUEST_FILENAME
不是有效文件,请将整个网址重定向到index.php?pageId=
整个网址
然后,您将导航更改为:
echo "<li><a href="/'.$key.'">'.$value.'</a></li>'."\n";
修改:我将Trivikrtam的编辑内联移动,见上文。 RewriteRule应该是index.php?pageId=$1
而不是/index.php?pageId=$1
。谢谢@Trivikrtam!