【问题标题】:id to title url rewrite not workingid 到标题 url 重写不起作用
【发布时间】:2017-06-04 12:00:55
【问题描述】:

我想在 url 地址栏中将 id 转换为标题,我发现很多与此主题相关的问题。我还在根目录代码中创建了 .htaccess 文件,如下所示

<IfModule mod_rewrite.c>   RewriteEngine On     RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ ProductDetail.php?Product=$1 [QSA,L]
</IfModule>`

但没有任何作用。我是重写 URL 的新手,我只想将ProductDetail.php?Product=1212 转换为ProductDetail/Title
谢谢你的问候

【问题讨论】:

  • 您需要注意您创建的动态配置文件实际上是由 http 服务器考虑的。看看 apaches 重写模块文档中的 AllowOverride 特性。
  • AllowOverride All but not work
  • 尝试检查一下:在该配置文件中放置一个明确的语法错误。之后您的 http 服务器错误日志文件中是否出现错误?哪个错误?
  • 哦,显然你还需要确保重写模块实际加载到http服务器中。
  • “根目录”一词实际上指的是哪个文件夹?

标签: php apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

url 重写的一个基本规则是 在重写时不能处理查询

如果在您的示例中 ProductDetail/Title 标题表示具有 product=1212 的项目的标题,我们需要在生成 url 之前实际运行查询以找到 Title,这反过来会导致更改您的网站的查询方法,从而降低了效率(而不是在 where 子句中使用 product,您必须使用将替换 Title 的字符串)。

但是,我们可以使用以下代码创建从 ProductDetail.php?Product=1212ProductDetail/1212 的转换

    <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ ./ProductDetail.php?Product=$1 [QSA,L]
    </IfModule>

此外,您需要在路径中的 php 文件前面加上 ./,因为 php 文件位于目录中。否则它可能会产生错误或根本无法工作。

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多