htacess代理重定向/ a到/ b,301将/ b重定向到/ a

时间:2015-05-29 23:37:03

标签: apache .htaccess mod-rewrite

我的网站建立在定制的集中式传统CMS上。

它有一个在URL /数据库

下工作的部分

对于一个网站,我想将其更改为使用/ blog,但仍需要告知CMS其数据库。

所以.htaccess我有

RewriteRule ^blog$ /database [P,L]
RewriteRule ^blog/(.*)$ /database/$1 [P,L]

哪个效果很好。但我还需要告诉谷歌网站已经改变,而不是看旧网站。

所以我需要/ database to 301 to / blog。

所以:

RewriteRule ^database$ /blog [L,R=301]

我已经使用http://htaccess.madewithlove.be对此进行了测试,它说它很好,但它会在浏览器中造成无限循环。

说实话,我觉得问题的一部分是我不能很好地表达这个问题,尤其是标题,所以对此的任何反馈都会受到赞赏。

以下是文件的其余部分,以防相关

# redirect trailing slashes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{QUERY_STRING} ^(.+)?fromMobile=true$ [NC]
RewriteRule (.*) /$1?%1&%2 [R=301,L]

RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L]

#uk.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^iflg\.uk\.com$ [NC]
RewriteRule ^(.*)$ http://www.iflg.uk.com/$1 [R=301,L]

RewriteRule ^blog$ /database [P,L]
RewriteRule ^blog/(.*)$ /database/$1 [P,L]

#RewriteCond %{REMOTE_ADDR} !=localhost
#RewriteRule ^database$ /blog [L,R=301]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
</IfModule>


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /~iflg/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /~iflg/index.php
</IfModule>

1 个答案:

答案 0 :(得分:0)

您需要免除第二条规则以防止代理服务器被重定向。

RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteRule ^database$ /blog [L,R=301]

不要依赖那个htaccess测试仪,它太简单了。