0

私は、より大きなバージョンの URL にリダイレクトされる短い URL が多数あるサイトで作業しています。短い URL はオフラインで配布され、ユーザーは通常それらを覚えており、ブラウザーのアドレス バーに入力するという考え方です。例: http://www.example.com/abcはhttp://www.example.com/higher_education/companion/politics/abc.html にリダイレクトする必要
があります。また、いくつかの外部リンクもあります。のように: http://www.example.com/googleはユーザーをhttps://www.google.com にリダイレクトします
編集 - http://www.example.com/elementary/def.htmlになる別のシナリオがありますhttp://www.example.com/elementary/xyz.html
リダイレクトされます。RewriteMap. そのために作成したコードは次のとおりです。

<IfModule rewrite_module>
RewriteEngine on
RewriteMap custommap txt:/var/www/vhosts/example.com/httpdocs/map.txt
#RewriteCond %{REQUEST_URI} !^/index.php$
RewriteRule "^(.*)$"  "${custommap:$0}" [R,L,NC]
</IfModule>

含まれるmap.txtもの:

abc http://www.example.com/higher_education/companion/politics/abc.html
google https://www.google.com

問題は、.htaccss ファイルにもいくつかの RewriteRule が含まれていることです。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)\.html$ /index.php?sid=$1&ssid=$2 [L,NC,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /index.php?sid=$1 [L,NC,QSA]

そのため、付属のすべてのリクエストは、標準の CMS 機能として.html提供されます。index.phpただし、コードはリダイレクト ループに入ります。この問題を軽減するために誰かが光を共有するなら、それは素晴らしいことです. Apache のバージョンは 2.2 なので、IF-ELSE は使用できません。

よろしく、
アニーク

4

1 に答える 1