我现在有:
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®ion=$1 [L]
RewriteRule ^fishing/([^/]*)/?$ region.php?region=$1 [L]
RewriteRule ^fishing?$ fishing.html [L]
我已添加所有代码以改善SEO。删除www。总是添加尾随/等等。现在问题是当我做domain.co.uk/fishing/它加载region.php文件而不是fishing.html
我该如何防止这种情况?
答案 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®ion=$1 [L]
您的路径fishing/
实际上符合规则^fishing/([^/]*)/?$
。因为它以fishing/
开头,所以有0个或更多字符不是/
(有0,匹配),并且有0或1 {{ 1}}在最后(有0,匹配),到达路径的末尾。
请记住,通过强制使用尾部斜杠,该路径将成为工作目录,因此相对路径将从该目录而不是根目录开始。确保您使用绝对路径来处理CSS,JS和图像。