【发布时间】:2018-05-28 09:57:22
【问题描述】:
我有一个从“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 ='
【问题讨论】:
-
您需要在内部重写之前执行外部重定向。
-
还有一个提示:文字点需要在 RegexPatterns 中转义:
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]通常不需要,但只是偶然或偶然......
标签: php apache .htaccess mod-rewrite