需要.htaccess RewriteRule建议

时间:2012-03-20 17:27:15

标签: .htaccess mod-rewrite

我四处寻找答案,没有运气。

我想做的是替换

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

2 个答案:

答案 0 :(得分:1)

这似乎对我有用。

RewriteRule ^(superv/)([^\?/]+)$ $1?p=$2 [R,NC]

如果要进行内部重定向,请删除R.

答案 1 :(得分:1)

出于某种原因,这个公式有效(内部重定向):

RewriteRule (.*)(superv/)?(.*) $1$2index.php?p=$3 [NC,QSA]

似乎打破了“无限循环”。