1

私は自分の .htaccess ファイルでいくつかの異なることをしようとしていますが、それはまだ私にとって少し新しいので、すべてを自分のやりたいようにするのに苦労しています。ここで私が困っているのは...

1) モバイル デバイスが Opera Mini を実行している場合を除き、モバイル デバイス用のモバイル サイトにリダイレクトしたいと考えています。私はそれを解決しようとしましたが、まだ Opera Mini をリダイレクトしています。リダイレクトする必要があるのは次のとおりです(このサイトから取得したコードに基づいています。このコードは機能します)

# Detect if the user is on a mobile device
RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ mobi|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino [NC,OR]
# If user is mobile, redirect to mobile site, preserving the remainder of the URL
# For example, http://www.triadbarspecials.com/barname redirects to http://m.triadbarspecials.com/barname
RewriteRule ^(.*)$ http://m.triadbarspecials.com/$1 [L,R=302,nc]

そのため、Opera Mini が常にフル Web サイトにリダイレクトされるようにしたかったため、次のコードを追加しました。

# Detect if we're in Opera Mobile
RewriteCond %{HTTP_USER_AGENT} opera\ mini
# If so, make sure user is on the main site
RewriteRule ^(.*)$ http://www.triadbarspecials.com/$1 [L,R=302,nc]

メインサイトに誘導されない原因となっている何が起こっているのか、誰にもわかりますか?

2) ユーザーが URL の .com/ 部分の後にバーの名前を入力できるようにサイトをセットアップしました。そのバーがサイトに存在する場合、.htaccess はユーザーを正しいページにルーティングします。例えば、triadbarspecials.com/justinsbar is the same as triadbarspecials.com/bars.php?barname=justinsbar

エラー ドキュメントが正しく機能しないという問題があります。ユーザーが自分のサイトに存在しないバーの名前を入力すると、URL は引き続きページに誘導されますが、その名前のバーがないため、動的コンテンツは表示されません。triadbarspecials.com/ユーザーは、入力した URL が存在しない限り、入力したすべてのページにも誘導されます。これが私が持っているコードです...

# The following allows for URL's to be typed as just the bar's name
# for example, http://www.triadbarspecials.com/bars.php?barname=barname is changed to     http://www.triadbarspecials.com/barname
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ bars.php?barname=$1 [L]

このコードは一般化されているように見えるので、うまくいけば、誰かがこれを補強し、物事を適切にリダイレクトするのを手伝ってくれることを願っています. これが私がエラードキュメントのために持っているものです

ErrorDocument 400 /error.php?error=400
ErrorDocument 401 /error.php?error=401
ErrorDocument 403 /error.php?error=403
ErrorDocument 404 /error.php?error=404
ErrorDocument 500 /error.php?error=500

3) .htaccess ファイルにこのコードがありますが、それが何をするのか完全に忘れてしまいました。ただ削除したくないので、誰かがそれが何をするのか説明できることを願っています...

RewriteCond %{HTTP_HOST} ^triadbarspecials.com[nc]
RewriteRule ^(.*)$ http:#www.triadbarspecials.com/$1 [r=301,nc]

助けていただける方、よろしくお願いします!

4

1 に答える 1

1
  1. このリンクによると、 Opera Miniのユーザー エージェントには" opera mini " と"opera mobi"の両方の文字列が含まれており、最初のリダイレクトで 2 番目の文字列と照合しています。これは、「Opera mini」デバイスがモバイル サイトにリダイレクトされ、2 番目のルールが適用されないことを意味します。2 番目のリダイレクトを取り除き、2 つの条件を組み合わせる必要があります。

    # Detect if the user is on a mobile device
    RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ mobi|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino [NC]
    # As long as it's NOT opera mini
    RewriteCond %{HTTP_USER_AGENT} !opera\ mini [NC]
    # If user is mobile, redirect to mobile site, preserving the remainder of the URL
    # For example, http://www.triadbarspecials.com/barname redirects to http://m.triadbarspecials.com/barname
    RewriteRule ^(.*)$ http://m.triadbarspecials.com/$1 [L,R=302,nc]
    
  2. bars.phpバーがスクリプトに存在するかどうかを確認する必要があります。そのスクリプト内で、barnameパラメーターによって要求されたバーが存在しない場合は、ブラウザーを にリダイレクトし/error.php?error=404ます。ルールはバー名がデータベースに存在するかどうかわからないため、これを mod_rewrite 内で厳密に行うことはできません。Mod_rewrite には、データベースへの固有のアクセス権がありません。

  3. wwwホスト名から欠落しているサイトへのリクエストwww. したがって、誰かが次のように入力した場合:

    http://triadbarspecials.com/somebar
    

    次の場所にリダイレクトされます。

    http://www.triadbarspecials.com/somebar
    
于 2012-12-18T23:38:28.393 に答える