我应该转换仍然留在我的 htaccess 文件中的几个 Redirect 301 规则,因为有人告诉我最好不要在同一个文件中混合 Redirect 和 Mod Rewrite 规则。
Redirect 301 /bar.php http://www.foo.com/abc/bar.php
RedirectMatch 301 ^/(bar(?!bapapa\.)[^/.]+\.php)$ http://www.foo.com/abc/$1
- 将每次访问重定向到
/bar.php
子文件夹 abc 中的同一文件 /bar
将对以(不包括)开头的 php 文件的每次访问重定向到/barbapapa.php
子文件夹 abc 中的相同文件
我无法转换这两个规则。至于第一条规则,我尝试过:
RewriteRule ^bar.php$ "http://www.foo.com/abc/bar.php" [R=301]
我正确地从/bar.php
to重定向/abc/bar.php
,但我看到的不是页面,而是一条浏览器消息 (Firefox),说明服务器正在以无法完成请求的方式重定向。有什么提示吗?谢谢
编辑:/abc/.htaccess 的内容
RewriteEngine On
#inherit from root htaccess and append at last
RewriteOptions inherit
#disable hotlinking but allow image bots
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?foo.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !images.google\.
RewriteCond %{HTTP_REFERER} !yahoo\.
RewriteCond %{HTTP_REFERER} !bing\.
RewriteCond %{HTTP_REFERER} !msn\.
RewriteCond %{HTTP_REFERER} !ask\.
RewriteCond %{HTTP_REFERER} !arianna\.
RewriteCond %{HTTP_REFERER} !yandex\.
RewriteCond %{HTTP_REFERER} !babylon\.
RewriteCond %{HTTP_REFERER} !virgilio\.
RewriteCond %{HTTP_REFERER} !avg\.
RewriteCond %{HTTP_REFERER} !delta-search.com\.
RewriteCond %{HTTP_REFERER} !images.search.conduit.com\.
RewriteCond %{HTTP_REFERER} !search.findeer.com\.
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteCond %{HTTP_REFERER} !search\/cache [NC]
RewriteCond %{HTTP_REFERER} !cache [NC]
RewriteRule \.(jpe?g|png|gif)$ - [NC,F]
#rename old gif maps to png
Options +FollowSymLinks
RewriteRule ^([^.]+)\.gif$ http://www.foo.com/abc/$1.png [L,R=301]
Options -Indexes