0

編集: 何かを追加する必要があります。まず、SEO のために URL 表示を変更したいです。ウェブサイトにアクセスするために www を使用する場合、問題はありません。2 番目のリンクが表示され、すべて問題ありません。

しかし、リンクから「www」を削除すると、最初の URL に変更されてしまい、それは望ましくありません。

変わりたい

http://www.mysite.com/index.php? route =epson-claria-uyumlu-yazici-kartus-dolum-murekkebi-500g.html

http://www.mysite.com/epson-claria-uyumlu-yazici-kartus-dolum-murekkebi-500g.html

どうすればそれができますか?

私は試した

RewriteCond %{QUERY_STRING} ^_route_=(.*)$
RewriteRule ^index\.php$ /%1 [R=301,L]

しかし、それは機能していません。

私の.htaccessは

RewriteBase /

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]

RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

RewriteCond %{QUERY_STRING} ^route=common/home$
RewriteRule ^index\.php$ http://www.mysite.com? [R=301,L]

RewriteCond %{HTTP_HOST} !^www\.mysite\.com$
RewriteRule (.*) http://www.mysite.com/$1 [R=301,L] 
4

2 に答える 2

1

最初の注意:私はApacheの第一人者ではないので、私の答えに盲目的に頼らないでください。

www.必要に応じて最初にリダイレクトします

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

_route_次に、クエリ変数で示されるページに移動します

# if it is the index page...
RewriteCond %{REQUEST_URI} ^/(index\..+)?$ [NC]
# and if the query string starts with _route_=
RewriteCond %{QUERY_STRING} ^_route_=(.*)$
# redirect
RewriteRule ^(.*)$ http://%{SERVER_NAME}/%1? [R=301,L]

最後の行のサーバー変数SERVER_NAMEは、で変更する必要がある場合がありHTTP_HOSTます。

于 2012-12-13T01:24:39.613 に答える
1

Maybe this is what you're looking for:

RewriteRule ^(.*)$ index.php?route=$1 [L]

If you have to visually change the address bar, leave the RewriteRule in place as I described above, and put this in your index.php before any output:

if(isset($_REQUEST['route']))
{
    header('Location: '.urlencode($_REQUEST['route']));
}
于 2012-12-12T23:30:25.800 に答える