mod_rewrite错误

时间:2010-01-12 18:22:41

标签: mod-rewrite

使用这个重写规则给了我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 个答案:

答案 0 :(得分:1)

试试这个:

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

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

答案 1 :(得分:1)

错误是microsites/index.php也与^microsites/(.*)$匹配。排除目的地,它应该有效:

RewriteCond $1 !=index.php
RewriteRule ^microsites/(.*)$ /microsites/index.php?uID=$1 [L]

答案 2 :(得分:0)

检查您的重写日志。我认为你最终会进入重写循环,因为^microsites/(.*)$与你重定向到的网址(/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

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