2017-05-25 123 views
0

我需要使用htaccess的让所有的网页?网页劝到301永久重定向= 9的index.phphtaccess的重定向重定向的URL都与网页的index.php

可以如何实现期望的

导人

例如-1

http://www.example.com/?page=9&option=com_news&view=list&Itemid=100&limitstart=840 

http://www.example.com/index.php&option=com_news&view=list&Itemid=100&limitstart=840 

或者说,例如2

http://www.example.com/?page=17&option=com_news&view=list&Itemid=100 

编辑 使用

RewriteEngine on 

RewriteCond %{THE_REQUEST} \?page=.+&(.+)\sHTTP [NC] 
RewriteRule^/index.php&%1? [L,R=301] 

但力曾作为输出

http://www.example.com/index.php&limitstart=840 
+0

你只是想删除页面? –

+0

yes删除?页面并添加index.php – Ruchika

+0

'index.php'是隐式的(假设你的DirectoryIndex是为它设置的) - 在'/?something = something'和'/ index之间没有实际区别。 PHP的东西=东西' – CD001

回答

2

假设你真的想/index.php?option=...而非/index.php&option=... - 只是在查询字符串匹配:

RewriteEngine On 
RewriteCond %{QUERY_STRING} page=[^&]+&(.*) [NC] 
RewriteRule .* /index.php?%1 [L,R,QSD] 

但是,如果你真的/index.php&option=...更换重写规则附:

RewriteRule .* /index.php&%1 [L,R,QSD] 


注:

RewriteRule .* /index.php?%1? [L,R] 
:无论哪种方式,这可能无法按预期如果你的Apache的版本比2.4以上有替换重写规则的工作,如果page不是第放慢参数


[QSD]标志只与2.4引入 - 不应该是必要的,因为整个查询字符串正在匹配。

+0

可以使用 - RewriteCond%{QUERY_STRING} page = [^&] +&(。*)[NC] RewriteRule。* /index.php?%1 [L,R = 301] – Ruchika

+0

' R'和'R = 301'的标志,因为默认的重定向是301 ...应该工作; 'QSD'应该丢弃重写的URL中的任何额外的查询字符串 - 因为你匹配整个事情,它不应该是必要的,所以是的,你可以离开它。查询字符串重写时,我只是无限递归循环的偏执狂。 – CD001

1

您可以使用此:

RewriteEngine on 

RewriteCond %{THE_REQUEST} \?page=.+&(.+)\sHTTP [NC] 
RewriteRule^/index.php&%1? [L,R=301] 
+1

技术上这就是要求,但我怀疑你即将得到一个*没有工作*评论,因为查询字符串正在开始'&' – CD001

+0

谢谢,但它的功能工作 - 输出是http:/ /www.example.com/index.php&limitstart=840 – Ruchika

+1

似乎'。+'正在贪婪然后... – CD001