【问题标题】:url rewriting problemurl重写问题
【发布时间】:2011-03-23 08:05:44
【问题描述】:

在我的.htaccess 文件中,我有以下内容

Options -Indexes
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*)/(.*)$  index.php?lang=$1&id=$2 [L]

所以当我写http://mydomain.com/am/home 时,它将被重定向到http://mydomain.com?lang=am&id=home


但是我有一个cms 文件夹,我需要去

http://mydomain.com/cms/index.php 写的时候

http://mydomain.com/cms 但它不会发生。

我能做什么?

谢谢

【问题讨论】:

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


    【解决方案1】:

    添加RewriteCond

    RewriteCond $1 !=cms
    RewriteRule ^(.*)/(.*)$  index.php?lang=$1&id=$2 [B,L]
    

    当您转到/cms 时,Apache 可能会对/cms/ 执行 301,因此您的重写规则将匹配。这将避免匹配/cms/

    【讨论】:

    • 太棒了。非常感谢。但在这种情况下,RewriteCond 中的 $1 仅指下一个 RewriteRule?怎么样,如果我有很多重写器?
    • @Syom 是的,只有下一个。如果你需要很多,你试着把这个放在其他之前:RewriteRule cms/ - [L]。最后一个 (L) 停止一轮替换。
    【解决方案2】:

    添加:

    RewriteRule ^(.*)/?$ $1/index.php [L]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2011-12-19
      • 2011-05-29
      相关资源
      最近更新 更多