【问题标题】:.htaccess file rewrite rule check.htaccess 文件重写规则检查
【发布时间】:2013-01-30 06:56:21
【问题描述】:

我想重写我的 apache mod_rewrite 模式。我习惯做以下事情:

RewriteEngine on
RewriteRule /^([^A-Z0-9a-z]+)\.html /search.php?search_id=$1&%{QUERY_STRING}

根据上述规则,我无法得到我期望的结果。 谁能告诉我的代码有什么问题以及如何解决它。

已编辑。 我的要求很简单。 如果我输入 /1.html 到 /search.php?search_id=1

,我想重定向

就是这样。

【问题讨论】:

  • 你期待什么?
  • @faa 我已经编辑了我的问题..请检查一下。

标签: php .htaccess codeigniter open-source


【解决方案1】:

这应该可行:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !search\.php
RewriteCond %{REQUEST_URI}  ^/([0-9]+)\.html [NC]
RewriteRule  .*    search.php?search_id=%1    [L,QSA]

静默地图

http://example.com/FileID.html

收件人:

http://example.com/search.php?search_id=FileID

search.php 被认为是固定字符串,而FileID 可以是任意数字。

对于永久重定向,请将[L,QSA] 替换为[R=301,L,QSA]

【讨论】:

    【解决方案2】:

    你的规则有错别字试试这个:

    RewriteEngine on
    RewriteRule ^/([^A-Z0-9a-z]+)\.html /search.php?search_id=$1&%{QUERY_STRING}
    

    顺便说一句,你也可以尝试使用这个:

    RewriteRule ^/?([^A-Z0-9a-z]+)\.html /search.php?search_id=$1&%{QUERY_STRING}
    

    这使得前导斜杠成为可选的。

    【讨论】:

      【解决方案3】:

      你是在域名后面输入 1.html 吗?也就是说,如果您的域是 example.com,那么您输入 example.com/1.html? 如果您正在这样做,请不要在 .htaccess 文件中的正则表达式之前使用 /。

      尝试将以下内容添加到您的主 .htaccess 文件中。它位于您网站主页所在的目录中:

      RewriteEngine On
      #RewriteBase /
      RewriteRule ^([A-Za-z0-9]+)\.html/?$ /search.php?search_id=$1 [NC, L]
      

      我使用 RewriteBase 作为评论。如果您使用共享服务器,请将其保留为评论或删除该行。

      编辑:[NC, L] 用来说明,规则的 NC 标志不需要区分大小写(不区分大小写),如果匹配,则 L 标志停止。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-16
        • 2012-11-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多