2

htaccessファイルを使用してページをリダイレクトしようとしていますが?c=oldpage、新しいURLの末尾に追加し続けます。例:

http://www.mydomain.co.uk/newpage.html?c=oldpage

ここに投稿されたソリューションのいくつかを試しましたが、うまくいきませんでした。ここに私の.htaccessファイルがあります:

DirectoryIndex index.php index.html index.htm    
Options +FollowSymLinks    
RewriteEngine on    
RewriteCond %{QUERY_STRING} PHPSESSID=.*$    
RewriteRule (.*) http://www.mydomain.co.uk/$1? [R=301,L]    
RewriteCond %{HTTP_HOST} ^mydomain.co.uk$ [NC]    
RewriteRule ^(.*)$ http://www.mydomain.co.uk/$1 [R=301,L]    
RewriteCond %{THE_REQUEST} /index\.php\ HTTP/    
RewriteRule ^index\.php$ / [R=301,L]    
RewriteEngine on    
RewriteRule ^product/(.*).html$ product.php?p=$1 [L]    
RewriteRule ^(.*)\.html$ category.php?c=$1 [L,NC]        

Redirect 301 /oldpage.html http://www.mydomain.co.uk/newpage.html    

ErrorDocument 404 /404.php

助けてくれてありがとう。

4

2 に答える 2

1

これは、mod_alias (Redirectディレクティブ) と mod_rewrite がうまく連携していないことです。両方のモジュールが URL ファイル マッピング パイプラインの同じ URI にディレクティブを適用するため、どちらのディレクティブも他のモジュールが何をしているかを認識していないため、お互いを無視することを知りません。ターゲットが重複しているため、両方のモジュールが同じ URI にディレクティブを適用しており、ごちゃごちゃした結果が得られます。

この場合、mod_rewrite に固執し、リダイレクトを内部の書き換えの上に移動する必要があります。

DirectoryIndex index.php index.html index.htm    
Options +FollowSymLinks    
RewriteEngine on    

# redirects 
RewriteCond %{QUERY_STRING} PHPSESSID=.*$    
RewriteRule (.*) http://www.mydomain.co.uk/$1? [R=301,L]    

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

RewriteCond %{THE_REQUEST} /index\.php\ HTTP/    
RewriteRule ^index\.php$ / [R=301,L]    

RewriteRule ^oldpage.html$ http://www.mydomain.co.uk/newpage.html [R=301,L]

# internal rewrites
RewriteRule ^product/(.*).html$ product.php?p=$1 [L]    
RewriteRule ^(.*)\.html$ category.php?c=$1 [L,NC]        

ErrorDocument 404 /404.php
于 2012-10-15T23:47:02.520 に答える
0
RewriteEngine on
RewriteCond %{HTTP_HOST} ^abc\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.abc\.net$
RewriteRule ^example\.html$ "http\:\/\/abc\.net\/example\/" [R=301,L]
RewriteOptions inherit

フォルダーに、または:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^abc\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.abc\.net$
RewriteRule ^example\.html$ "http\:\/\/abc\.net\/example\.html$" [R=301,L]
RewriteOptions inherit

あまり詳しくありませんが、私が使っているものですので、参考になれば幸いです。

于 2012-10-15T23:07:24.433 に答える