Apache htaccess在URL中发送URL

时间:2015-02-04 13:53:53

标签: apache .htaccess mod-rewrite

我尝试在网址中发送网址,中间有ModRewrite。

这里是重写规则。它用于搜索用户的个人资料。

RewriteEngine On RewriteRule ^(query)/(profile)/([a-z0-9:.()\-\ ]+)/?$ search/index.php?scope=$2&query=$3 [NC,L]

这是网址

http://www.example.com/query/profile/http://www.facebook.com/example

无论我如何执行重写规则,如果我放置了该网址,我会继续NetworkError: 500 Internal Server ErrorNetworkError: 404 Not Found

我该怎么做?我在Windows 7家庭高级版上。我错过了什么吗?

上面的网址是使用ajax传递的。

修改

#htaccess in site1 folder
RewriteRule ^resources/?(.*)/?$ /control/$1 [NC,L]

#htaccess in control folder
RewriteRule ^(query)/(profile)/([a-z0-9:.()\-\ ]+)/?$ search/index.php?scope=$2&query=$3 [NC,L]

next folder is `search` which has `index.php`

URL used
http://www.example.com/resources/query/profile/http://www.facebook.com/example

修改 我重写了RewriteRule,如下所示,现在没有收到任何错误消息,但Apache似乎在/之后从网址中删除了一个http://。所以我只得到http:/www.facebook.com/example。任何帮助都将不胜感激。

RewriteRule ^(query)/(profile)/([a-z0-9\/:.()\-\ ]+)/?$ search/index.php?scope=$2&query=$3 [NC,L]`

1 个答案:

答案 0 :(得分:1)

您需要从RewriteCond捕获URL,否则Apache会将多个//修剪为一个。

在root .htaccess中更改此规则:

RewriteCond %{REQUEST_URI} /resources/(.+)$ [NC]
RewriteRule ^ /control/%1 [L]

/control/.htaccess文件中包含此内容:

RewriteEngine On
RewriteBase /control/

RewriteCond %{REQUEST_URI} /(query)/(profile)/(.+)$ [NC]
RewriteRule ^ /resources/search/index.php?scope=%2&query=%3 [QSA,L]