0

ここに投稿された例を試してみましたが、htaccessを適切に実行することができませんでした。

状況は次のとおりです。次のようなリンクがあります

domain.com/sport/football/index.php?lang_id=1&page_id=500 (ホームページ) domain.com/sport/football/index.php?lang_id=1&page_id=505 (選手) domain.com/sport/football/index.php?lang_id=1&page_id=510 (コーチ) ...

名前を変更したい

domain.com/sport/football/

domain.com/sport/football/players/

domain.com/sport/football/coaches/

など...そして、指定されていないすべてのpage_idがホームページにリダイレクトされます。

すべてのヘルプは非常に高く評価されています。

4

2 に答える 2

0

ドキュメント ルートの htaccess ファイルに、次を追加します。

RewriteEngine On
RewriteRule ^sport/football/$ /sport/football/index.php?lang_id=1&page_id=500 [L,QSA]
RewriteRule ^sport/football/players/?$ /sport/football/index.php?lang_id=1&page_id=505 [L,QSA]
RewriteRule ^sport/football/coaches/?$ /sport/football/index.php?lang_id=1&page_id=510 [L,QSA]

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /sport/football/index\.php
RewriteCond %{QUERY_STRING} ^(.*)page_id=500($|&)
RewriteRule ^ /sport/football/? [L,R=301]

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /sport/football/index\.php
RewriteCond %{QUERY_STRING} ^(.*)page_id=505($|&)
RewriteRule ^ /sport/football/players/? [L,R=301]

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /sport/football/index\.php
RewriteCond %{QUERY_STRING} ^(.*)page_id=510($|&)
RewriteRule ^ /sport/football/coaches/? [L,R=301]
于 2013-11-09T19:42:58.903 に答える
0

そのために使えますRewriteMap Directive。名前から ID へのマッピングを定義する必要があります

players 505
coaches 510

Apacheにマップについて伝えます

RewriteMap football txt:/path/to/footballmap.txt

RewriteMapメイン構成ファイルまたはVirtualHostディレクティブ内にある必要があります。

これで、このマップを使用できます

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^sport/football/(.*)/?$ /sport/football/index.php?lang_id=1&page_id=${footballmap:$1|500} [L]

キーが見つからない場合は、デフォルト500(ホームページ) が使用されます。マッピングが多数ある場合は、代わりにハッシュファイルを使用することもできます。

アップデート:

RewriteRuleサーバーまたは仮想ホスト構成ファイルにアクセスできない場合、固定の「マップ」しか持てません

RewriteRule ^sport/football/players/?$ /sport/football/index.php?lang_id=1&page_id=505 [L]
RewriteRule ^sport/football/coaches/?$ /sport/football/index.php?lang_id=1&page_id=510 [L]
# maybe other similar rules ...
# this is a catch everything else and must come last
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^sport/football/ /sport/football/index.php?lang_id=1&page_id=500 [L]
于 2013-11-09T19:53:11.037 に答える