1
は私が、私はしたくないhtaccessの内部リライトは
http://example.com/some/other/path/?q=query
http://example.com/another/path/?q=query
http://example.com/yet/another/path/?q=query
への要求を処理するために同じファイルを希望
http://example.com/somepath/?q=query
に要求を処理するPHPファイル/var/www/somepath/index.php
を持っparamsはファイルシステム内の複数の場所にphpファイルをコピーします。私は内部書き換えルールを使用する方が良い方法だと思いました。
RewriteRule ^some/other/path /somepath/%{QUERY_STRING} [PT]
しかし、それは動作しません:ここで私はトップレベル.htaccess
ファイル/var/www/.htaccess
に入れたものです。私は404を得るhttp://example.com/some/other/path/?q=query
同じ.htaccessファイル内に外部書き換えルール(301と302リダイレクト)があるので、mod_rewriteが有効であることがわかっています。
はあなたanubhavaありがとうございました。ユーザーがhttp://example.com/some/other/path/?q=queryを参照すると、URLの「some/other/path」部分が消えるのはなぜですか?書き換えルールの一部として一致させていないため、URLにとどまっていますか? 古いURLは完全に消去されますか?もしそうなら、クエリ文字列も消去されませんか? – George
これは内部書き換えであり、情報が失われることはありません。あなたが '$ _SERVER [" REQUEST_URI "]'をチェックすると '/ some/other/path /?q = query'と表示され、' $ _SERVER ["QUERY_STRING"] 'は' q = query'を表示し、 '$ _SERVER [" SCRIPT_NAME "]'それは書き換えられたパスすなわち '/ somepath/index.php'を表示します – anubhava