0

ワイルドカードサブドメインを使用してURLをより多くのseourlに書き直したいのですが、htaccess条件を記述できず、サポートが必要です。

私はこのURLを持っています:

http://learntipsandtricks.com/blog/c/magento

次のように書き直したい:

http://magento.learntipsandtricks.com/

ページネーションリンクの変更:

http://learntipsandtricks.com/blog/92/magento/3

に:

http://magento.learntipsandtricks.com/p-92-3

最後に記事のURLを変更します。

http://learntipsandtricks.com/blog/magento/114/magento-index-management-Cannot-initialize-the-indexer-process

に:

http://magento.learntipsandtricks.com/114-magento-index-management-Cannot-initialize-the-indexer-process

私はこれを書いた:

RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteCond %{HTTP_HOST} (.+)\.learntipsandtricks\.com\/p\-(\d+)\-(d+) [NC]
RewriteRule ^(.*)$ http://learntipsandtricks.com/blog/%2/%1/%3/$1 [P]

RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteCond %{HTTP_HOST} (.+)\.learntipsandtricks\.com\/(\d+)\-(.*) [NC]
RewriteRule ^(.*)$ http://learntipsandtricks.com/blog/%1/%2/%3/$1 [P]

RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteCond %{HTTP_HOST} (.+)\.learntipsandtricks\.com [NC]
RewriteRule ^(.*)$ http://learntipsandtricks.com/blog/c/%1/$1 [P]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php/$1 [L]

上記のコードは機能しません。htaccessでifelseを使用して、すべてのタイプのURLをチェックし、それに応じて書き換えることは可能ですか?

編集:

RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteCond %{HTTP_HOST} (.+)\.learntipsandtricks\.com [NC]
RewriteCond %{REQUEST_URI} ^/p-(\d+)-(\d+)$ [NC]
RewriteRule ^(.*)$ http://learntipsandtricks.com/blog/%1/[first part of sub-domain]/%2/$1 [P]

ここでサブドメインの最初の部分を取得するにはどうすればよいですか。

ありがとうございました。

4

1 に答える 1

1

HTTP_HOSTURLパスは含まれません。URLパスと照合する場合は、REQUEST_URI代わりに使用してください

RewriteCond %{REQUEST_URI} ^/p-(\d+)-(\d+)$

例えば。

からRewriteCond Directive

  • RewriteCond後方参照:これらは、%N(0 <= N <= 9)の形式の後方参照です。%1から%9は、現在の条件セットで最後に一致したRewriteCondから、パターンのグループ化された部分(ここでも括弧内)へのアクセスを提供します。%0は、そのパターンに一致する文字列全体へのアクセスを提供します。

したがって、ドメインコンポーネントとURLパスコンポーネントの両方をキャプチャする場合は、1つにまとめる必要がありHTTP_HOSTますREQUEST_URIRewriteCond

RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteCond %{HTTP_HOST} (.+)\.learntipsandtricks\.com [NC]
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^(.+)\.learntipsandtricks\.com/p-(\d+)-(\d+)$ [NC]
RewriteRule ^(.*)$ http://learntipsandtricks.com/blog/%2/%1/%3/$1 [P]
于 2013-03-04T16:00:39.833 に答える