0

この 2 時間、Google と Stackoverflow のアーカイブを調べて、自分の質問に対する答えが見つかるかどうかを調べてみましたが、何も見つからないどころか、見つけすぎました! 残念ながら、301 リダイレクトの質問の山に追加する必要があります。ごめん。そして、これを見てくれてありがとう;)

基本的に、URL を単純化しようとしているブログがあります。現在、URL は次のようになっています。

http://tempertemper.net/post.php?s=2012-05-30-freeagent

私は彼らがこのように見えることを望みます:

http://tempertemper.net/2012-05-30-freeagent

RewriteRule /(.*)$ /post.php?s=$1 を .htaccess ファイルに追加しようとしましたが、それがありません。

現在、完全なファイルは次のようになっています。

<ifModule mod_rewrite.c>

DirectoryIndex index.php index.html

ErrorDocument 404 http://tempertemper.net/error.php

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.tempertemper\.net$
RewriteCond %{REQUEST_URI} !cron.php
RewriteRule ^(.*)$ http://tempertemper.net/$1 [R=301,L] 

</ifModule>

wwwをリダイレクトする正規化ビットの後にこれを追加しようとしました。www 以外へ:

RewriteRule ^([a-zA-Z0-9_-]+)$ post.php?s=$1

それは一種の作品です。http://tempertemper.net/2012-05-30-freeagentにリンクできますが、問題はhttp://tempertemper.net/post.php?s=2012-05-30-freeagentがまだ存在することです。検索エンジンの目には、コンテンツが重複していると思われるため、これはおそらくseoにとって悪いことです。[R=301] を新しい行の最後に追加しようとしましたが、新しいリンクが機能しなくなります。また、角括弧に ,L を入れて正規化コマンドから削除しようとしましたが、喜びはありません (L は最後のコマンドですよね…?)。

基本的に、私は post.php?s= で生成された、または生成されたすべての URL を post.php?s= のない URL に永久にリダイレクトして、それらのページに着信するすべてのリンクが既にリダイレクトされ、今後のリンクは、新しい外観の URL に直接移動します。

それが理にかなっていることを願っています…</p>

ありがとう、

マーティン:)

4

1 に答える 1

0

Apacheは実際にローカルパスを修正します=>適切な完全修飾名(私の最初の仮定)ですが、ファイルが実際に間違ったファイルをチェックしていることがわかります。提供されたファイルを使用すると、これがファイルの内容として機能すると思います。

DirectoryIndex index.php index.html
ErrorDocument 404 http://tempertemper.net/error.php

RewriteEngine On
# don't redirect post.php to itself
RewriteCond %{REQUEST_URI} !post.php
# don't redirect error.php to post.php 
RewriteCond %{REQUEST_URI} !error.php
RewriteRule ^(.*)$ "/post.php?$1" [R=301,L]
于 2012-08-08T10:39:26.510 に答える