我想在apache web服务器中重写url。我的网络项目有两条路径如下:
1- www.test.com/folder1/folder2/index?v1=1&v2=2&v3=3 ==>我想重写www.test.com/index/1/2/3
2- www.test.com/folder3/folder4/index?v1=1&v2=2&v3=3 ==>我想重写www.test.com/index/1/2/3
我的重写鳕鱼如下:
#RewriteCond %{REQUEST_URI} !^/folder1/folder2
#RewriteRule ^(.*)$ /folder1/folder2/$1 [L]
RewriteCond %{REQUEST_URI} !^/folder3/folder4
RewriteRule ^(.*)$ /folder3/folder4/$1 [L]
谢谢....
答案 0 :(得分:0)
你有的重写似乎暗示如果在浏览器网址栏中输入了网址“www.test.com/index/1/2/3”,你想要在内部将其重写为其中一个网址请求参数。显而易见的原因,这是不可能的。一个网址可以(或应该)只链接到另一个内部网址。
如果您希望两个带有查询字符串的网址都加载同一页面,那么您的网站将在搜索引擎中因“重复内容”而受到惩罚。这就是你如何做到的。
RewriteCond %{QUERY_STRING} ^v1=([^&]*)&v2=([^&]*)&v3=([^&]*)$
RewriteRule ^(folder1/folder2|folder3/folder4)/index$ index/%1/%2/%3 [L]
%1
到%3
被前一个重写条件中的第一个,第二个和第三个捕获组所取代。在这种情况下,查询字符串中的值为v1,v2和v3。
可以找到文档here。