【问题标题】:Pretty URLs rewrite sometimes with "?" sometimes without漂亮的 URL 有时会用“?”重写。有时没有
【发布时间】:2011-08-05 21:53:34
【问题描述】:

我希望有人能回答“为什么”会这样:

有时我可以使用:

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

然后有时上述方法不起作用,我必须使用:

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

主要区别在于添加了? ...我通常会在不同的系统设置上看到这种情况,fastcgi vs module vs cgi,但还没有做足够的设置来查看模式。

我猜这与 apache/setup 如何解析 path/path_info 数据有关。欢迎任何想法,理想情况下,我想对为什么会发生这种情况以及何时发生有一个可靠的解释。

在同一个线程上...有时 Apache 不输出 PATH_INFO 环境变量,这可能是造成这种情况的根本原因,但我想知道为什么会这样。

【问题讨论】:

  • 可能由AcceptPathInfo apache 配置选项管理。
  • 我玩过AcceptPathInfo,但它似乎没有任何影响,至少看起来是这样。
  • 您在谈论 wordpress 或 codeigniter 还是两者兼而有之?因为,它们都实现了自己的路由规则。
  • codeigniter 主要是,我不确定我是否在 WordPress 中遇到过这种情况(我认为 WP 的路由比 CI 更好,他们保持简单并且更多地依赖 PHP)
  • 你试过qsappend|QSA吗?

标签: apache wordpress codeigniter mod-rewrite friendly-url


【解决方案1】:

?是查询字符串开始的标记。

所以基本上你的第一条规则将 URL "x" 重写为 index.php 目录中的文件 "x",第二条规则将 URL "x" 重写为带有参数 "x"index.php 文件。 [(顺便说一句,我不知道如何检索文件中没有名称的变量,通常您使用?var=value&var2=value2等...)

【讨论】:

    猜你喜欢
    • 2010-11-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2017-06-26
    • 2010-10-26
    • 2014-09-24
    相关资源
    最近更新 更多