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/([^/]*)/([^/]+) 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

我怎样才能防止这种情况?

4

2 回答 2

0

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

RewriteRule ^fishing?$ fishing.html [L]

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

并将其更改为

RewriteRule ^fishing/$ fishing.html [L]

因为您正在强制使用斜杠。

您可以在fishing.html 上方添加类似的内容以用于css 等...

RewriteRule ^(css|js|images)/([^/]*)/?$ $1/$2 [L]
于 2012-04-13T05:05:53.257 回答
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 个或多个不是 a 的字符/(有 0, match),最后有 0 或 1 /(有 0, match),到达路径的末尾。


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

于 2012-04-13T05:11:59.147 回答