代码之家  ›  专栏  ›  技术社区  ›  JHollanti

mod_rewrite诺比问题

  •  1
  • JHollanti  · 技术社区  · 16 年前

    所以,我已经设置了这个Zend风格的前端控制器。基本上,它只是将每个url重定向回索引。

    URL的形式为/ controller/view/ + [additional parameters]

    RewriteRule ^home /home/index
    RewriteRule ^products /products/view
    
    RewriteRule .* index.php
    

    然而,mod_rewrite似乎忽略了我的重写规则。它不会将home更改为home/index,尽管我相当确定它应该能够捕获该位。所以,我认为这与重命名请求uri有关?

    这是.htaccess文件:

    Options +FollowSymLinks
    RewriteEngine on
    
    RewriteRule  ^admin/  -  [L]
    RewriteRule  ^media/  -  [L]
    
    RewriteRule  ^home        home/index
    RewriteRule  ^products    products/view
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* index.php
    
    3 回复  |  直到 16 年前
        1
  •  0
  •   Gumbo    16 年前

    当你试图重写所有刚开始的东西时,你可能会遇到问题 /home /home/index /家

    RewriteRule ^home$ home/index
    RewriteRule ^products$ products/view
    

    但其余的工作应该很好。

        2
  •  0
  •   Fabian    16 年前

    以下规则涵盖了所有内容,因此如果它位于顶部,它将永远不会考虑任何其他规则。

    RewriteRule .* index.php
    

    Options +FollowSymLinks
    RewriteEngine on
    
    RewriteRule  ^admin/      -  [L]
    RewriteRule  ^media/      -  [L]
    
    RewriteRule  ^home        home/index [L]
    RewriteRule  ^products    products/view [L]
    
    RewriteCond  %{REQUEST_FILENAME} !-f
    RewriteRule  .*           index.php
    
        3
  •  0
  •   JHollanti    16 年前

    REQUEST_URI ,但另一个变量名为 REDIRECT_URI 这就解释了为什么什么都没发生。

    RewriteRule ^products products/view [NC,L]
    

    法比安提出了类似的建议。他只是把index.php附加到末尾,这对我来说不起作用。如果我把index.php去掉,一切都会很好地工作。不知何故,它神奇地将所有内容重定向到index.php。

    推荐文章