php-ローカルホストの.htaccessファイルでURLを書き換えます
それで、.htaccessファイルを使用してURLを書き換えることができましたが、リダイレクトによってURLが台無しになります。たとえば、私はこれを書き直そうとします:
localhost/mysite/public_html/class/5/
これに:
localhost/mysite/public_html/index.php?v=class&id=5
そして私は.htaccessファイルで次の行を使用します:
RewriteRule ^public_html/([A-Za-z]+)/([0-9]+)/?$ ./public_html/index.php?v=$1&id=$2 [L,R]
しかし、ブラウザはここにリダイレクトします(Windows7ではwamp を使用しています):
localhost/C:/wamp/www/mysite/public_html/index.php?v=class&id=5
これは間違っていて、403エラーが発生します。私は何をすべきか?
答え :
解決策:
ルールは次のようになっている必要があります:
RewriteRule ^public_html/([A-Za-z]+)/([0-9]+)/?$ /public_html/index.php?v=$1&id=$2 [L,R]
答え :
解決策:
問題は、置換関数(./public_html/index.php)の./に起因する必要があります。書き換えルールは、^と$の間に配置した正規表現に一致し、それだけを2番目の部分に置き換えます。ルールの前にすでに何らかのrewritecondがあると想定しているので、「。/」を削除してみてください
rewritecondを次のように変更してみてください:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
これは、要求されたURLがファイルまたはディレクトリでない場合、それがフォロースルーしてリダイレクターを試行することを意味します
答え :
解決策:
以前にどのルールを使用したかはわかりませんが、最小限のhtaccessはこれである必要があります:
RewriteEngine On
RewriteBase /mysite/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^public_html/([A-Za-z]+)/([0-9]+)/?$ /mysite/public_html/index.php?v=$1&id=$2 [L,R]
ルールで./を使用することは避け、ロケーションパスには mysite
フォルダを含める必要があることを忘れないでください
>
答え :
解決策:
信じられないほどです。エラーはFirefoxのキャッシュの結果でした。 Chromeを使用しましたが、問題ありませんでした。そこで、Firefoxのキャッシュをクリアすると、すべてが正常に機能しました。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。