這個是網站更好新域名,之前的是http://www.baidu.com
後面改成https://www.segmentfault.com
然後寫301跳轉的時候為什麼會失敗?
我的.htaccess檔案程式碼如下
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.segmentfault.com/ [R=301,L]
RewriteCond %{HTTP_HOST} ^baidu.com [NC]
RewriteRule ^(.*)$ https://www.segmentfault.com/ [L,R=301]
</IfModule>
這個規則之前用baidu.com/category/p123.html
跳到www.baidu.com/category/p123.html
是沒有問題的
這是伺服器conf對應的編寫規則
新網域
<VirtualHost *:443>
ServerAdmin baidu@qq.com
DocumentRoot "/data/wwwroot/default/"
ServerName www.segmentfault.com
ErrorLog "/data/wwwlogs/www.segmentfault.com_error_apache.log"
CustomLog "|/usr/local/cronolog/sbin/cronolog /data/wwwlogs/segmentfault/pc/%Y%m%d_www.segmentfault.com_access.log" common
<Directory "/data/wwwroot/default">
SetOutputFilter DEFLATE
Options FollowSymLinks ExecCGI
Require all granted
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.php
</Directory>
</VirtualHost>
老網域的conf規則
<VirtualHost *:80>
ServerAdmin baidu@qq.com
DocumentRoot "/data/wwwroot/default"
ServerName www.baidu.com
ErrorLog "/data/wwwlogs/www.baidu.com_error_apache.log"
CustomLog "|/usr/local/cronolog/sbin/cronolog /data/wwwlogs/baidu/pc/%Y%m%d_www.baidu.com_access.log" common
<Directory "/data/wwwroot/default">
SetOutputFilter DEFLATE
Options FollowSymLinks ExecCGI
Require all granted
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.php forum.php
</Directory>
</VirtualHost>
这些都是设置好之后,我访问老域名http://www.baidu.com/category/p1056.html
为什么始终跳转到https://www.segmentfault.com/
不管访问什么页面都是跳转到https://www.segmentfault.com/
怎么样才可以让他跳转到对应的页面也就是访问http://www.baidu.com/category/p1056.html
能够跳转到https://www.segmentfault.com/category/p1056.html
哪里设置不对了,。求解
大家讲道理2017-05-27 17:45:41
RewriteRule . / [L]
这句话, 注意参数 L
表示last, 立即停止重寫操作,並不再應用其他重寫規則。
所有後面的規則都會失效.
重定向 RewriteRule ^(.*)$ https://www.segmentfault.com/ [R=301,L]
這句是正確的。