id到标题url重写不起作用

时间:2017-06-03 20:08:46

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

我想在url地址栏中将id转换为title,我发现很多与此主题相关的问题。我也在根目录代码中创建.htaccess文件看起来像

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

但没有任何效果。我是重写网址的新手,我只想转换为     ProductDetail.php?Product=1212ProductDetail/Title
谢谢您的亲切问候

1 个答案:

答案 0 :(得分:1)

网址重写的一个基本规则是在重写时无法处理查询

如果在您的示例中ProductDetail/Title标题表示具有product=1212的项目的标题,我们需要在生成网址之前实际运行查询以查找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文件。否则可能会产生错误,或者根本不起作用。

此致