私はURLのより大きなバージョンにリダイレクトされる多くの短い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
EDITにユーザーをリダイレクトします - http://www.example.com/elementary/def.htmlは、しかし、我々は今RewriteMap
でこれを達成したいhttp://www.example.com/elementary/xyz.html
にリダイレクトされます別のシナリオがあります。我々はそのために書かれたコードは以下の通りです:httpd.conf内のRewriteMapと.htaccessの競合するRewriteRule
<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]
だから、どんな要求が.html
が付属していますが、標準のCMS機能としてindex.php
によって提供されます。しかし、コードはリダイレクトループに入ります。 誰かがこの問題を緩和するためにいくつかの光を分かち合っているなら、それは素晴らしいことでしょう。 Apacheのバージョンは2.2なので、IF-ELSEは使えません。
よろしく、
Aneek
RewriteMap
からURLを提供するルールにいくつかの制限を置く必要があり
こんにちは、私はこれを試して、はい、これはファイルの拡張子が存在しないそのビットのために働いた。ただし、リダイレクトする必要があるURLがある場合、これは別の問題です。何をすればいいですか? –
'RewriteRule。+ $ {custommap:$ 0} [R = 301、L、NE]'も正常に動作するはずですが、マップファイルのキー名にDOTを避けることができない理由はわかりません。 – anubhava
ありがとう、私はこれもチェックします。 –