始终添加尾随/到网址

时间:2012-04-13 05:04:31

标签: apache .htaccess seo

我现在有:

    RewriteEngine On

    RewriteCond %{HTTP_HOST} !^domain.co.uk$ [NC]
    RewriteRule ^(.*)$ http://domain.co.uk/$1 [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^(.*)$ http://domain.co.uk/$1/ [L,R=301]


    RewriteRule ^fishing/([^/]*)/([^/]+) fishery.php?url=$2&region=$1 [L]
    RewriteRule ^fishing/([^/]*)/?$ region.php?region=$1 [L]      

    RewriteRule ^fishing?$ fishing.html [L]

我已添加所有代码以改善SEO。删除www。总是添加尾随/等等。现在问题是当我做domain.co.uk/fishing/它加载region.php文件而不是fishing.html

我该如何防止这种情况?

2 个答案:

答案 0 :(得分:0)

好的,对于你的新扩展问题,只需移动

即可
RewriteRule ^fishing?$ fishing.html [L]

高于前两个规则,因此首先匹配。

并将其更改为

RewriteRule ^fishing/$ fishing.html [L]

因为你强制使用尾随斜杠。

你可以在fishing.html上面添加类似这样的东西用于css等......

RewriteRule ^(css|js|images)/([^/]*)/?$ $1/$2 [L]

答案 1 :(得分:0)

您的规则在到达该位置之前会被其他内容匹配。你需要重新订购它们。应首先列出不太具体的内容,以便更具体。

RewriteEngine On

RewriteCond %{HTTP_HOST} !^domain.co.uk$ [NC]
RewriteRule ^(.*)$ http://domain.co.uk/$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.co.uk/$1/ [L,R=301]

RewriteRule ^fishing/$ fishing.html [L]

RewriteRule ^fishing/([^/]*)/?$ region.php?region=$1 [L]
RewriteRule ^fishing/([^/]*)/([^/]+) fishery.php?url=$2&region=$1 [L]

您的路径fishing/实际上符合规则^fishing/([^/]*)/?$。因为它以fishing/开头,所以有0个或更多字符不是/(有0,匹配),并且有0或1 {{ 1}}在最后(有0,匹配),到达路径的末尾。


请记住,通过强制使用尾部斜杠,该路径将成为工作目录,因此相对路径将从该目录而不是根目录开始。确保您使用绝对路径来处理CSS,JS和图像。