【问题标题】:url rewrite not working in apache?url重写在apache中不起作用?
【发布时间】:2011-03-01 07:03:38
【问题描述】:

您好,我正在使用 PHP 应用程序。现在我想实现对 SEO 友好的 URL 重写概念 我的当前网址是domain.com?category-view.php?manufacturer=Apple

我想要上面的网址

domain.com/category-view/manufacturer/apple (or)

domain.com/category-view/apple

我已经创建了 .htaccess 文件并将这段代码用于重写

RewriteEngine On
RewriteRule ^([A-Za-z0-9_-]{4,60})$ category-view.php?manufacturer=$1 

但它无法正常工作。帮我解决这个问题

【问题讨论】:

  • 至少破折号应该在字符集定义[A-Za-z0-9_\-]中转义
  • 它不起作用是什么意思?你有任何错误吗?
  • @Col。弹片你是对的。一些正则表达式实现确实需要在 [] 内转义破折号和反斜杠。这个没有。
  • @lkke - 从某种意义上说,我越来越喜欢“domain.com?category-view.php?manufacturer=Apple”,而不是我想要的“domain.com/category-view/manufacturer/apple”

标签: php .htaccess


【解决方案1】:

在“RewriteEngine On”之前添加这一行

Options +FollowSymLinks -MultiViews

它对我有用。

【讨论】:

    【解决方案2】:

    这对我有用

    RewriteEngine On
    RewriteRule ^category-view/([A-Za-z0-9_\-]{4,60})$ category-view.php?manufacturer=$1 
    

    【讨论】:

      【解决方案3】:

      加载 mod_rewrite

      1. 在开始之前,请确保备份原始文件以防万一出现错误,这样您就可以随时恢复到原始配置 - 在开始执行此类操作之前始终进行备份。)
      2. 找到 httpd.conf 文件(通常您会在名为 conf、config 或类似内容的文件夹中找到它。在 Fedora 中,您可以在 /etc/httpd/ 目录中找到它。)
      3. 在 httpd.conf 文件中找到并取消注释 LoadModule rewrite_module modules/mod_rewrite.so 行(从行前删除井号'#' - # 符号用于 cmets,通过删除 # 符号,您正在取消注释该行)
      4. 还发现 ClearModuleList 行未注释,然后找到并确保 AddModule mod_rewrite.c 行未注释掉。 (我在 Fedora 中没有找到这些,但我的 mod_rewrite 效果很好)
      5. 完成更改并保存后,重新启动 httpd (apache) 服务器以使更改生效。最简单的方法是转到 shell 命令并输入:/etc/init.d/httpd restart(这适用于 Fedora,可能对其他发行版有所不同!)
      6. 完成

      来自http://www.wallpaperama.com/disp-post10.html

      另见http://httpd.apache.org/docs/current/mod/mod_rewrite.html

      【讨论】:

        【解决方案4】:

        根据http://httpd.apache.org/docs/current/mod/mod_rewrite.html,当您在.htaccess 文件中使用RewriteRule 时,您需要使用RewriteBase 指定基本URL,否则它会替换为文件系统路径。因此,请尝试将其添加到您的 .htasccess 文件中:

        RewriteBase ?
        

        【讨论】:

          【解决方案5】:

          您是否检查过您的安装是否启用了 mod_rewrite?您可以通过将<?php phpinfo() ?> 放入文件中来快速检查。查找“mod_rewrite”。

          【讨论】:

          • 是的,我确实在加载的模块中检查了“mod_rewrite”,它已经存在
          猜你喜欢
          • 1970-01-01
          • 2010-12-09
          • 2011-10-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-22
          • 2020-02-26
          • 1970-01-01
          • 2016-06-21
          相关资源
          最近更新 更多