【问题标题】:PHP/Apache: Rewrite rules with .htaccessPHP/Apache:用 .htaccess 重写规则
【发布时间】:2011-10-22 08:56:46
【问题描述】:

我对 mod_rewrite 有点进退两难。
如何编写将决定以下内容的规则:

如果我浏览 /en/page/page 我想将其重写为:
index.php?language=en&page=/page

但如果我只浏览 /page 我想将其重写为:
index.php?page=/page

这可能吗?

编辑:
/page 只是一个随机的动态页面名称,它也可以是whatever

我需要一个规则来检查 /se == 一个字符串,并且不超过 2 个字符>/page --> index.php?lang=se&page=/page 如果浏览页面 /page 它会注意到 / page == 超过 2 个字符并重写为 index.php?page=/page

编辑2: 找到了我的问题的答案:

重写引擎开启 RewriteBase / ## 检查它是否不是文件名或目录名 RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d ##重写规则 RewriteRule ^(.{2})/(.*)$ index.php?lang=$1&page=$2 [L] RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    我让它自己工作! 如果其他人需要做同样的事情,以下是规则:

    重写引擎开启 RewriteBase / ## 检查它是否不是文件名或目录名 RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d ##重写规则 RewriteRule ^(.{2})/(.*)$ index.php?lang=$1&page=$2 [L] RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

    【讨论】:

      【解决方案2】:
      RewriteRule ^page$ index.php?language=en&page=/page/page [L]
      RewriteRule ^page/ index.php?language=en&page=/page [L]
      

      【讨论】:

        【解决方案3】:

        试试这个:

        RewriteRule ^(.*)/(.*)(/.*)$ index.php?language=$1&$2=$3 [L]
        RewriteRule ^page$ index.php?page=/page/page [L]
        

        【讨论】:

          猜你喜欢
          • 2014-11-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-24
          • 1970-01-01
          • 2014-06-30
          • 2016-08-09
          相关资源
          最近更新 更多