【问题标题】:.htaccess redirect or PHP change.htaccess 重定向或 PHP 更改
【发布时间】:2011-01-21 03:46:15
【问题描述】:

我网站的主导航是这样编码的:

<li><a href="index.php?pageID='.$key.'">'.$value.'</a></li>'."\n";

但我希望链接的 URL 看起来像 domain.co.nz/pagename,而不是 domain.co.nz/index.php?pageId=pagename

你会建议我如何做到这一点?

【问题讨论】:

  • 如果你想让它显示'xyz',然后输入'xyz'

标签: php class function .htaccess


【解决方案1】:

这样的事情应该可以工作:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?pageID=$1

第一行打开 mod_rewrite。第二行将基本 URL 设置为 / (这很烦人,但您必须将其设置为您正在处理的基本路径)。第三和第四行确保请求不作为文件或目录存在。最后一行是真正的魔法;基本上它搜索“任何东西”,捕获它在 $1 中找到的内容,并将 URL “重写”为 index.php?pageID=$1。如果你学会使用正则表达式,你也可以做更复杂的事情。

【讨论】:

  • 它什么都不做吗?或者会发生什么?
【解决方案2】:

是的,您可以使用 .htaccess RewriteRule 完成此操作。在您的 .htaccess 文件中,包括:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?pageId=$1

这意味着:

如果REQUEST_FILENAME 不是有效文件,则将整个 URL 重定向到 index.php?pageId=整个 URL

然后您将导航更改为:

echo "<li><a href="/'.$key.'">'.$value.'</a></li>'."\n";

编辑:我移动了 Trivikrtam 的内联编辑,见上文。 RewriteRule 应该是index.php?pageId=$1 而不是/index.php?pageId=$1。谢谢@Trivikrtam!

【讨论】:

  • 嗨,我已经这样做了,现在它显示主域/号码而不是主域/子文件夹/号码
  • 它显示主域/号码,因为正在重定向到根文件夹。您必须更改代码中的第二行,以便在子文件夹中发生重定向,如下所示: RewriteRule (.*) index.php?pageId=$1
猜你喜欢
  • 2012-11-20
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
相关资源
最近更新 更多