请看一下这个.htaccess文件

时间:2013-08-20 10:21:27

标签: .htaccess mod-rewrite http-status-code-301

我正在尝试使用.htaccess文件中的重写脚本在我的站点上实现301的子页面,该子页面托管在Apache服务器(Fasthosts)上。我试图遵循许多文档(事实上,我以前从未使用.htaccess实现301的任何问题!)但是在这个特定的网站上,似乎没有任何工作。

目前有一个301从非www到www重新指向,这是正常的。还有其他一些使用正则表达式的片段,我想这是用于CMS。

以下是.htaccess文件的当前状态。我试图重新指向的301的例子就在那里(第5行和第6行)

旧网页:http://www.junkwize.com/home-Garden%20Clearance 到新页面:http://www.junkwize.com/services/garden-clearance-london

.htaccess文件:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^junkwize.com
RewriteRule (.*) http://www.junkwize.com/$1 [R=301]

RewriteCond %{HTTP_HOST} www.junkwize.com/home-Garden%20Clearance
RewriteRule (.*) http://www.junkwize.com/services/garden-clearance-london [R=301]

#Options +FollowSymlinks
RewriteRule ^.htaccess$ — [F]

RewriteRule ^([/admin]+)$ admin/login.php [L]
RewriteRule ^([/admin]+)([/blocks]+)$ admin/login.php [L]

RewriteRule ^([/blocks]+)$ index.php [L]
# RewriteRule ^([^/\.]+)-([^/\.]+)-([^/\.]+)$ index.php?main=$1&id=$2&menu=$3 [L]
RewriteRule ^([/deals]+)-([^/\.]+)$ index.php?main=$1&id=$2 [L]

# RewriteRule ^([^/\.]+)-([^/\.]+)$ index.php?main=$1&leftmain=$2 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)$ index.php?main=$1&leftmain=$2 [L]
RewriteRule ^([^/\.]+)$ index.php?main=$1 [L]

非常感谢任何帮助。

非常感谢。

1 个答案:

答案 0 :(得分:0)

此代码有问题,无法正常工作:

RewriteCond %{HTTP_HOST} www.junkwize.com/home-Garden%20Clearance
RewriteRule (.*) http://www.junkwize.com/services/garden-clearance-london [R=301]

原因是RewriteCond %{HTTP_HOST}只能匹配主机名。用以下代码替换该代码:

RewriteRule ^home-Garden\ Clearance/?$ /services/garden-clearance-london [R=301,L,NC]