【问题标题】:Permalinks doesn't work when overriding .htaccess覆盖 .htaccess 时永久链接不起作用
【发布时间】:2020-09-07 12:56:12
【问题描述】:

尝试使用 php 构建网站(不是 wordpress)...想要覆盖 .htaccess 文件以制作永久链接。我写了以下内容,但它不起作用。我使用 utf-8 编码。在 NameCheap 主机上托管。请帮忙。

RewriteEngine On
RewriteRule ^laptops/$ https://example.com/categories.php?category=$1 [R=301,L]

在主文件中,我使用以下链接调用 categories.php:

<a href="/categories.php?category=<? echo strtolower($row1["subcatname"]); ?>" class="card-link" ><? echo $row1["subcatname"]; ?> </a>

Categories.php 代码如下:

<?php
    if(isset($_GET['category']) && $_GET['category'] == 'laptops') {
        echo $_GET['category'] ;
    }
?>

.htaccess 有以下脚本:

RewriteEngine On
RewriteRule ^laptops/$ https://onlibest.com/categories.php?category=$1 [R=301,L]

我的期望: https://example.com/categories.php?category=laptops,应该向用户显示如下永久链接 https://example.com/laptops

【问题讨论】:

  • 显示原始链接以及您期望的结果。
  • 更新了我的问题,希望我现在清楚
  • 所以,基本上我想要:example.com/categories.php?category=laptops,应该向用户显示如下永久链接example.com/laptops
  • mod_rewrite 重写传入请求的 URL。它不会首先更改您的 HTML 代码链接到的 URL - 这是 需要更改的内容。

标签: php .htaccess web-hosting


【解决方案1】:

首先,确保 mod_rewrite 已启用并且您的 Apache 配置中允许 htaccess 文件。

然后,将此代码放入您的 htaccess 中

RewriteEngine On
RewriteRule ^([^/\.]+)/?$ categories.php?category=$1 [L]

应该为:

example.com/categories.php?category=laptops

to

example.com/laptops 

【讨论】:

  • 我已经检查过并且 htaccess 是可读的...我之前也尝试过这个脚本,但是它不起作用...它与编码有什么关系吗?我使用utf-8编码来保存.htaccess ....(只是一个小信息。我曾经更改过编码,并且损坏了文件。后来我改回utf-8)...不确定这是否导致问题...
  • 你启用了 mod_rewrite 吗?
  • 如何在共享主机上检查?我在他们的文件服务器上找不到 httpd.conf 文件
  • 当你请求 url example.com/laptops 你得到什么?
  • 检查这个链接stackoverflow.com/questions/9234289/…它可能对你有帮助
猜你喜欢
  • 1970-01-01
  • 2012-12-21
  • 2011-05-18
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多