我有一个从'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 ='
答案 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