Stack Exchange での mod_rewrite と mod_alias を使用した Apache の構成に関連する問題はたくさんありますが、私の問題に対する答えが見つからなかったので、別の質問です! ;)
古いウェブサイトを新しい場所に移行しました。
以前は などの URL から記事にアクセスできるようにhttp://xxx/blog/index.php?post/YYYY/MM/DD/title
なっていたため、既存の Web ページを介してその形式のリンクが多数存在します。
これで、URL は になるはずなので、最終的な URL からhttp://xxx/post/YYYY/MM/DD/title
削除するだけです。blog/index.php?
mod_alias と句を使用したかったのですが、句が句の後に解釈されることをここRedirect
で読みました。これは、既に条件を使用しているため、私の場合は問題です。Redirect
RewriteRule
RewriteRule
これが私の現在の.htaccessファイルです:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1
このように変更しようとしました:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/index.php? / [R=301,L]
RewriteRule ^(.*)$ index.php?$1
以下を除いて、ほとんど機能します。
http://xxx/blog/index.php?post/YYYY/MM/DD/title
http://xxx/blog/?post/YYYY/MM/DD/title
( に注意)にリダイレクト/書き換えられる?
ため、機能しません- この新しい行は、/blog/index.php で始まらない他の多くの URL を台無しにしているように見えますか? バックエンド URL など...
どんな助けでも大歓迎です!
編集 (2014-07-16):
次のルールを使用する場合:
RewriteRule ^/?blog/index\.php(.*)$ /$1 [R=301,L]
次に、
ほぼ正しいものhttp://xxx/blog/index.php?test
に移動します
http://xxx/?test
(尋問マークはまだ問題です)!
しかし、追加して尋問マークを一致させようとすると、次のようになり\?
ます。
RewriteRule ^/?blog/index\.php\?(.*)$ /$1 [R=301,L]
その後、機能しなくなります...そこに行く:
http://xxx/blog/index.php?test
ただ私をそこに残してください!
何故ですか?