私はmod_rewriteの意味をテストしようとしています: 私は2つのファイルがあります: level1.php そして warpzone.php.
私の .htaccess 私は次のコードを持っています:
RewriteEngine On
RewriteRule ^warp-zone.php$ level-1.php
しかし、私がwarpzone.phpに行くと、何も起こらない:/(URLは変わらない)
助言がありますか?私は間違っていることを本当に知りません。
回答:
回答№1は0まずファイルの中に.htaccessファイルのPHPファイル名にダッシュを付けます。
書き換え条件 - これはコンテンツを新しいものに変更しますが、URLはそのままです:
RewriteEngine On
RewriteRule ^warpzone.php$ level1.php [L]
リダイレクト条件 - コンテンツとURLの両方を新しいものに変更します。
RewriteEngine On
RewriteRule ^warpzone.php$ /level1.php [R]
mod_rewriteの代わりにリダイレクト条件を使うこともできます:
Redirect 301 /warpzone.php /level1.php
場合は、あなたのために動作しない場合は、あなたの上部にあるheaders()メソッドを使用することができます warpzone.php
ファイル:
<?php
header("Location: " . $_SERVER["SERVER_NAME"] . "/level1.php");
?>
回答№2の-3
- warpzone.phpまたはwarp-zone.phpが正しいファイル名であるかどうかを確認してください。
- mod_rewriteが利用可能であればapacheのerror.logファイルをチェックし、そうでなければ有効にします(これは "LoadModule ..."で行うことも、Linuxディストリビューションでラップすることもできます)
- グローバルコンフィグファイルhttpd.conf / apache2.confに "AllowOverride All"を設定しないと、mod_rewriteの使用が許可されているかどうかをapache error.logで確認してください。
- 書き換えルールを "RewriteRule ^ warp-zone.php $ level-1.php"に変更してください [L]"httpリダイレクトを発行する; Lフラグなしでは、Webサーバーで内部的に処理されます; https://httpd.apache.org/docs/2.4/rewrite/flags.html すべての旗のために
敬具