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

模重写错误

  •  0
  • jerrygarciuh  · 技术社区  · 14 年前

    用这个重写规则我可以得到500分。我的语法有什么问题?

    Options +FollowSymlinks
    RewriteEngine on
    RewriteBase /
    RewriteRule ^microsites/(.*)$ /microsites/index.php?uID=$1 [L]
    

    我要做的是默写 http://site.com/microsites/anythingatall http://site.com/microsites/index.php?uID=anythingatall

    编辑:以下操作有效,不会引发错误

    RewriteRule ^([0-9])$ /microsites/index.php?uID=$1 [L]
    

    //结束编辑

    谢谢你的建议!

    3 回复  |  直到 13 年前
        1
  •  1
  •   Gumbo    14 年前

    错误是 microsites/index.php 也与 ^microsites/(.*)$ . 排除您的目的地,它应该工作:

    RewriteCond $1 !=index.php
    RewriteRule ^microsites/(.*)$ /microsites/index.php?uID=$1 [L]
    
        2
  •  1
  •   SamuelWarren    14 年前

    试试这个:

    Options +FollowSymlinks
    RewriteEngine on
    RewriteBase /microsites/
    RewriteRule ^(.*)$ /microsites/index.php?uID=$1 [L]
    

    这已经有一段时间了,但我相信你需要确保你的基地照顾任何实际的文件夹名称,除非你要用它们作为你的替换价值的一部分。

        3
  •  0
  •   Dan Beam    14 年前

    检查重写日志。我想你会在重写循环中结束,就像 ^microsites/(.*)$ 与您要重定向到的URL匹配( /microsites/index.php?uID=$1 )因此,它将继续循环,直到满足最大内部重定向数(默认为10)

    试试这个:

    RewriteEngine on
    RewriteBase /
    RewriteRule ^microsites/([^\.\?]+)$ /microsites/index.php?uID=$1 [L]
    

    这意味着(伪代码)

    if we found a "microsites/" at the beginning
    and there are no "." or "?" characters, store this value in $1
    then redirect to /microsites/index.php?uID=$1
    

    所以第二次,它会看到你已经完成了重定向,而不是永远循环。