htaccess重定向将所有url重定向到page.php

时间:2017-05-25 13:53:39

标签: php .htaccess

我需要建议301永久重定向使用htaccess所有页面都有?page = 9 with 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

http://www.example.com/index.php&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

2 个答案:

答案 0 :(得分: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替换为:

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


注意:无论哪种方式,如果page不是第一个参数

,这可能无法正常工作

如果您的Apache版本早于2.4,请将RewriteRule替换为:

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

[QSD]标志只引入了2.4 - 无论如何都不需要,因为整个查询字符串都是匹配的。

答案 1 :(得分:1)

您可以使用:

RewriteEngine on

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