2012-03-01 7 views
1

これらのmodリライトのトピックは、ここでstackoverflowで書き直しても、まだ私の質問に対する答えは見つかりません。私はトップサイトを持っていて、基本的に変更したいのは/index.php?method=in & cat = Half + Life( "+"はスペース)を/Half-Lifeに変更することだけです。Mod_rewrite /category.htm into/category

今まで、私は/Half+Life.htm& /index.php?method=in猫=ハーフ+ライフを変える成功しました。

は、私が欲しいのは.htmファイルが消えるようにして"+"にを変更することです " - "。ここで

は私が私の.htaccessファイルに働いているものとの私のコードです:

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule (.*)\.htm$ /index.php?cat=$1 [L] 

もう一つ質問:それは私がしなければ、私は、「SEOにやさしい」、それを呼び出すべきか、より多くのですそれはこの方法ですか?

ありがとうございます!

+0

私が使用することをお勧めします '-'なく' + 'のような:そう' /ゲーム/半減期/ 'あなたは(あなたのアンカーで)ダッシュインサイドを使用します。 – EscoMaji

+0

これは、私が.htaccessでmod_rewriteを使ってやりたいことです。私はスペースを変更することが可能であると確信しています、私はリンクの中で "+"を意味しますが、私はどのように分かりません。 – bobzrz8

+0

これは申し訳ありませんが、なぜ.htaccessにありますか?そのリンクは他のどこかで参照される必要がありますか?多分あなたのフロー/プロセスに従わないでください – EscoMaji

答えて

0

.htmを削除する際の問題は、すべての単一のURLを書き換えてしまうことです。これには、実際に存在するファイル(index.phpなど)のURLが含まれます。あなたが取ることができるいくつかのアプローチがあります。

実際のファイルのすべてにファイル名にドット(。)が付いていて、それ以外のものはすべて書き換えたとします。実際にファイルやディレクトリに拡張子を付けずに名前を付けると、これは機能しません。または、カテゴリのいくつかにドットを付ける場合。

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule ([^\.]+)$ /index.php?cat=$1 [L] 

あなたの書き換えルールが実際に存在するファイルを無視することができます

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) /index.php?cat=$1 [L] 
+0

これは絶対に完璧です。残っているのは、 "+"を " - "に変更することだけです。 これは現在の状態です:http://games-top200.com/Gaming+Websites これは私がそれをしたいと思う方法です。ページは機能しますが、同じ情報は表示されません。http://games-top200.com/Gaming-Websites – bobzrz8

+0

私はそれをどうしてもチェックするつもりですが、 "+"を " - "に変更しますか? – bobzrz8

+0

は申し訳ありませんが、私はコード 'オプション+ するRewriteCondの%{REQUEST_FILENAME}!-f するRewriteCond%{REQUEST_FILENAME}上のFollowSymLinksを RewriteEngineの2番目のセクションを使用していることを言及するのを忘れ! のRewriteRuleを-d(。*)/ index.php?cat = $ 1 [L] ' – bobzrz8

0

私はスペースでダッシュを交換するためにPHPを変更するために容易になるだろうと思いますが、あなたは本当にhtaccessファイルを使用する場合:

RewriteRule (.*)-(.*)\.(htm)$ "$1 $2.$3" 
RewriteRule (.*)\.htm$ /index.php?cat=$1 [L] 
+0

私は知らない他に何を使うべきか私はGoogleがこのようにページをより速く索引付けすると聞いています。そのため、.htaccessを使用したいのです。ちなみに、どうすれば ".htm"を残すことができますか?それとも可能ですか? – bobzrz8

+0

「.htmを残す」とはどういう意味ですか?スペースはダッシュで置き換えられますが、私のコードはあなたと同じです。 – Gerben

-1

あなたが求めているように見えるどのようなSEOスタイルのURIを翻訳することです内部パラメータベースのものに変換する。

RewriteBase/
RewriteRule (\w+)$    index.php?cat=$1  [L] 
RewriteRule (\w+)+(\w+)$  index.php?cat=$1-$2 [L] 
RewriteRule (\w+)+(\w+)+(\w+)$ index.php?cat=$1-$2-$3 [L] 
# and so on .. 

をしかし、これを行う最も簡単な方法は、すべての一般的なキャッチを使用することです:残念ながら、あなたがこれをcludgeする必要があるので、書き換えエンジンは、例えば、グローバル置換をサポートしていません

RewriteRule ([-+\w]+)$    index.php?cat=$1  [L] 

inddex.php$_GET['cat']str_replaceまたはpreg_replaceを使用してください。

+2

まあ、私はPHPでかなり新しいです。だから、これはちょっと難しいでしょう。しかし、ありがとう! – bobzrz8