使用这个重写规则给了我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]
//结束编辑
感谢您的任何建议!
答案 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
所以第二次,它会看到你已经完成了重定向而不是永远循环