4

私は周りを見回しましたが、率直に言って、より正確な結果を得るために検索する必要がある専門用語がわかりません. 一体、私はURLとURIとページとリンク、そしてそれぞれが何であるかとそうでないかに苦労しています。また、MOD_REWRITE ガイドは、Apache や Unix などに精通している人々向けに書かれているようです。特に、各「プログラミング」文字が何をするか、または何を意味するかを説明したり、例を解析したりする人がいない場合は特にそうです。ここで、そしてGoogle全体で、私が試みた検索の上位25の結果で、私が望むものは何も得られないようです...

さて、私がやろうとしているのは、3 つの変数に依存する URL のワイルドカード文字列を置き換え、その他のビットを保持することです。これは mod_rewrite を使用して可能ですか?

例えば

要求される 3 つの URL は次のとおりです。

  1. http://mydomain.com/WORDS-AND-DASHES-c-NUMBERS_WITH_UNDERSCORES
  2. http://mydomain.com/WORDS-AND-DASHES-m-NUMBERS_WITH_UNDERSCORES
  3. http://mydomain.com/WORDS-AND-DASHES-p-NUMBERS_WITH_UNDERSCORES

書き換えられた URL は、それぞれ次のようになります。

  1. http://mydomain.com/index.php?index&categories_id=NUMBERS_WITH_UNDERSCORES
  2. http://mydomain.com/index.php?main_page=index&mfrs_id=NUMBERS_WITH_UNDERSCORES
  3. http://mydomain.com/index.php?main_page=index&products_id=NUMBERS_WITH_UNDERSCORES

WORDS-AND-DASHES は、NUMBERS_WITH_UNDERSCORES と同様に、ページごとに内容と長さが異なります。唯一の定数は、ドメインと 3 つのリンク タイプ識別子 -c-、-n-、および -p- です。WORDS-AND-DASHES は、削除されたリンク タイプに応じて変数に置き換えられ、NUMBERS_WITH_UNDERSCORES は新しい URL に残ります。

IOW URL に「-c-」が含まれている場合、ドメインと「-c-」の間のすべてを「index.php?index&categories_id=" に置き換え、「-c-」部分を削除し、NUMBERS_WITH_UNDERSCORES を保持します。-c-、-m-、または -p- の後に数字のみが続く場合もあります。

PHP を知っていれば、おそらくこれは可能ですが、私は知りません。mod_write が私が思うほど強力であることを願っています。変数ごとに複数のルールが必要な場合でも、それで問題ありません。3 回の作業を行うことは、10000 回以上の作業よりも優れています。

FWIW、アップグレード中に、古い URL 書き換えモジュールが機能しなくなったことが判明したため、検索エンジンの .htaccess と sitemap.xml とそれぞれの結果のすべてのデッド リンクをすばやく再構築しようとしています。

...それからまた、Mangled Metaphorbial Creek に吠えているかもしれません。

あなたが共有する知識、方向性、および/またはアドバイスに感謝します。

-紀元前

4

2 に答える 2

1

次のルールが機能するはずです。これらは、Web サイトのルート ディレクトリにある .htaccess ファイル内に配置する必要があります。

RewriteEngine On
RewriteRule ^([a-z-]+)-c-([0-9_]+) index.php?index&categories_id=$2         [NC]
RewriteRule ^([a-z-]+)-m-([0-9_]+) index.php?main_page=index&mfrs_id=$2     [NC]
RewriteRule ^([a-z-]+)-p-([0-9_]+) index.php?main_page=index&products_id=$2 [NC]

index.php質問で言及した URL が要求されると、Apache が起動します。Apache はそれに応じてクエリ文字列を設定します。WORDS-AND-DASHES以外のものが含まれている場合はa-z-それに応じてルールを変更します。

于 2012-05-21T08:22:37.063 に答える
0

これは非常に単純化されているかもしれませんが、試してみてください:

RewriteEngine On
RewriteRule ^(.*?)-c-([\d_]+)$ index.php?index&categories_id=$2         [L]
RewriteRule ^(.*?)-m-([\d_]+)$ index.php?main_page=index&mfrs_id=$2     [L]
RewriteRule ^(.*?)-p-([\d_]+)$ index.php?main_page=index&products_id=$2 [L]
于 2012-05-21T08:23:18.920 に答える