301重定向index.php?P =

时间:2018-05-28 09:57:23

标签: php apache .htaccess mod-rewrite

我有一个从'www.example.com'到'example.com'的重定向网站。使用.htacccess文件中的条目:

RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

进入网站时:www.example.com,重定向有效:http://example.com

但是,在输入子页面时:www.example.com/page1.html,页面加载正确,但地址为:http://example/index.php?P=page1.html

这与.htaccess文件的入口有关,该文件从头开始:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^(.*)/n_(.*)+ [NC]
RewriteRule ^(.*)?$ index.php?p=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.*)/n_(.*)+ [NC]
RewriteRule ^n_(.*)[_+?]?$ index.php?p=news&nid=$1 [QSA,L]

如何处理301重定向以删除'index.php? P ='

1 个答案:

答案 0 :(得分:1)

我找到了脚本:

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

对于页面:http://example.com/index.php返回http://example.com/并正常工作。

子页面存在问题:

当他写http://www.example.com/page.html时,他得到:http://example.com/?p=page.html