【问题标题】:RewriteRule into sub directories is failingRewriteRule 到子目录失败
【发布时间】:2011-05-16 09:20:23
【问题描述】:

基本上,这是可行的 (http://example.com/@user):

重写规则 ^@([a-zA-Z0-9]+)[/]*$ find.php?twitter=$1 [QSA,L]

还有这个(http://example.com/api/@user):

重写规则 ^api/@([a-zA-Z0-9]+)[/]*$ twitter.php?username=$1 [QSA,L]

没有。我不知道为什么,但似乎每当我尝试这样做时,它都会重定向到http://example.com/@user 的函数,如果这有意义的话。基本上,重写规则忽略了“api/”前缀。

【问题讨论】:

  • 你有没有把第二条规则放在你的 htaccess 中?
  • 是的,似乎不是问题。具有子目录前缀的其他 htaccess 规则也会发生错误,即使它们没有没有前缀的对应部分。主要问题是 RewriteEngine 没有弄清楚子目录。我相信这是我的语法错误。
  • 你能举例说明第二条规则的前后关系吗?

标签: php regex .htaccess mod-rewrite


【解决方案1】:

我已经在测试服务器上尝试了以下语法,它完美地找到了。如果对您不起作用,则问题可能与正则表达式无关……

RewriteEngine on 

RewriteRule ^api/@([a-zA-Z0-9]+)/?$ twitter.php?username=$1 [QSA,L]
RewriteRule ^@([a-zA-Z0-9]+)/?$     find.php?twitter=$1 [QSA,L]

【讨论】:

  • 也许你可以解释一下原因。 gist.github.com/5b0099f6aafc6c6a1b7b 是我的 htaccess 文件。任何以 foo/ 开头的 RewriteRules 都不起作用,而特定的 api 似乎选择遵循相应规则的规则。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
  • 2017-01-16
  • 1970-01-01
  • 2019-03-30
  • 2019-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多