0

基本的に、SEO の目的で、クエリ文字列の URL をディレクトリ構造に変換しようとしています。そして、結果を得ることができるかどうかを確認するために、.htaccess ファイルで多くの意味論的な方法で同じロジックを言おうとするところまで来ました。これが私がやろうとしていることです。

要求は次のとおりです: mywebsite.com/test/antitrust/somelongfilename/

次に、要求するように変更しました: mywebsite.com/test/antitrust/?id=news&post=news/somelongfilename.html

そのため、人々が私の SEO フレンドリーなリンクをクリックすると、私の php コードが読み取れる醜いリンクに変更されます。「somelongfilename.html」はそれ自体では表示されず、php ファイルのコンテンツ領域にプッシュされたコンテンツのみが表示されます。

参考までに、post=news/somelongfilename.html は実際にはアンチトラスト ディレクトリから移動するディレクトリ/ファイルなので、/test/antitrust/news にあります。/ をクエリ文字列に入れるのはおそらく良い考えではありませんが、うまく機能しています。

.htaccess はサブディレクトリ /antitrust にあります。私は .htaccess の専門家ではないため、影響を与えたくない多くの Web サイトにサービスを提供しているため、ルート ディレクトリ .htaccess には触れたくないからです。

RewriteOptions inherit
RewriteEngine On
RewriteCond %{HTTP_HOST} news
RewriteRule ^/(.*) index.php/?id=news&post=$1 [QSA,L]

これの多くのバリエーションも試しました:

RewriteEngine On
RewriteOptions inherit
RewriteCond %{HTTP_HOST} ^news$
RewriteRule \/(.+?)\/?   ^?id=news&post=$2 [QSA,L]
RewriteRule ?id=(.+?)&post=(.+?) http://mywebsite.com/test/crush/antitrust/$1/$2/ [QSA,R]

どの部分が間違っているかについてのアイデアはありますか? ありがとう。

4

1 に答える 1

0

試す:

RewriteEngine On
RewriteOptions inherit

RewriteBase /test/antitrust/

# not sure why you need this, it's not part of your question
RewriteCond %{HTTP_HOST} news

# conditions to prevent looping
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*?)/?$ index.php?id=news&post=$1 [QSA,L]
于 2013-07-10T22:01:01.900 に答える