我四处寻找答案,没有运气。
我想做的是替换
http://localhost/mysite/superv/something
http://localhost/mysite/superv/?p=something
这是我昨天提出的最好的公式:
RewriteEngine On
RewriteBase /mysite/
RewriteRule ^(superv/)([^\?/]+)$ $1\?p=$2 [NC]
然而它没有用。
我认为“RewriteBase”与这个问题无关,因为这条线就像一个魅力:
RewriteRule ^(javascripts/main\.js)$ $1\.php [NC]
编辑:Right Rekire,复制和粘贴代码时出错。我现在已经解决了这个问题。
Edit2:这是apache日志中出现的错误:
[Tue Mar 20 20:26:01 2012] [error] [client 127.0.0.1]
Request exceeded the limit of 10 internal redirects due to probable configuration error.
Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
我猜这个问题是“循环”,我引用:
Looping occurs when the target of a rewrite rule matches the pattern.
This results in an infinite loop of rewrites
答案 0 :(得分:1)
这似乎对我有用。
RewriteRule ^(superv/)([^\?/]+)$ $1?p=$2 [R,NC]
如果要进行内部重定向,请删除R.
答案 1 :(得分:1)
出于某种原因,这个公式有效(内部重定向):
RewriteRule (.*)(superv/)?(.*) $1$2index.php?p=$3 [NC,QSA]
似乎打破了“无限循环”。