与mod_rewrite规则冲突?

时间:2011-12-01 00:40:37

标签: .htaccess mod-rewrite apache2

我怎样才能改写 www.mysite.com/login访问www.mysite.com/login.php 以及其他几个网站页面,如“搜索”和“注册”等?

我尝试用

做到这一点
RewriteRule ^(.+). $1.php [R,NC]

但是却得到了一个非常讨厌的重定向循环。 :/

我也想改写 www.mysite.com/Elvis访问www.mysite.com/profile?username=Elvis 我肯定会与第一条规则发生冲突。

这可能吗?

1 个答案:

答案 0 :(得分:0)

这是应该有用的东西:

# if the URL doesn't end with "php":
RewriteCond %{REQUEST_URI} !(.+)\.php$
# then whatever it is, add php at the end:
RewriteRule (.+) $1.php [NC]

您的错误是:

  • 指令R =强制重定向=它会将客户端浏览器重定向到新的,客户端会看到这个(URL,我想这不是你想要做的)
  • ^ . 无用,(可能)会产生错误。

如果这不起作用,它可能非常接近你想要的。

两个提示:


请尝试使用RewriteLog指令:它可以帮助您找出此类问题:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

我最喜欢检查regexp的工具:

http://www.quanetic.com/Regex(别忘了选择ereg(POSIX)而不是preg(PCRE)!)