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/ を実行すると、fishing.html の代わりに region.php ファイルがロードされることです。

どうすればこれを防ぐことができますか?

4

2 に答える 2

0

わかりました。新しい拡張質問については、

RewriteRule ^fishing?$ fishing.html [L]

前の 2 つのルールの上にあるため、最初に一致します。

そして、それをに変更します

RewriteRule ^fishing/$ fishing.html [L]

末尾のスラッシュを強制しているためです。

このようなものをcssなどのfishing.htmlの上に追加できます...

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/([^/]*)/?$ます。で始まるので、a 以外のfishing/文字が 0 個以上あり/( 0, match/があります)、最後に0 または 1 あり(0, matchがあります)、パスの最後まで続きます。


末尾のスラッシュを強制すると、そのパスが作業ディレクトリになるため、相対パスはルートではなくそのディレクトリから始まることに注意してください。CSS、JS、画像などに絶対パスを使用していることを確認してください。

于 2012-04-13T05:11:59.147 に答える