# make sure rewrite is activ
RewriteEngine On
# Rewrite a request for nieuws.php to news.php
RewriteRule ^nieuws.php$ news.php
トリックを行う必要があります。
代わりに、すべてのリクエストを index.php に送信して、そこで解析することができます。
## Redirect everything to http://hostname/?path=requested/path
RewriteEngine On
RewriteRule ^([\w\W]*)$ index.php?path=$1 [QSA]
[QSA] は、元の get 引数も確実に取得します。
ここで、index.php と要求されたページの $_GET['path'] で要求を解析する必要がありinclude
ます。
例えば:
if ($_GET['path'] == 'nieuws.php') {
include 'news.php';
} else if (empty($_GET['path'])) {
echo "HOME";
}
ユーザーが news.php を要求した場合でも、ユーザーのアドレス バーに常に nieuws.php が表示されるようにしたい場合は、次のようにします。
RewriteEngine On
# Redirect news.php to nieuws.php if and only if the request comes from the client
# (suppose the client didn't set ?norewrite.)
RewriteCond %{QUERY_STRING} !^norewrite[\w\W]*$
RewriteRule ^news.php$ nieuws.php [R=301,L]
# Send news.php if nieuws.php was requested and prevent news.php from being redirected
# to back to nieuws.php by the rule above.
RewriteRule ^nieuws.php$ news.php?norewrite [L,QSA]
(R=301 は「永久に移動した」リダイレクトをクライアントに送信することを意味し、L はこのルールが一致した後に書き換えを停止することを意味します)
norewrite の穴 (代わりに別のものを使用できます) は、ニュースとニュースの間の書き換えのエンドレス ループを回避するためにのみ必要です。
GET 引数を変換するには、上記のコードの最初の行の前に次のコードを試すことができます。
RewriteCond %{QUERY_STRING} ^readmore=(.*)$
RewriteRule ^news.php$ nieuws.php?lesseer=%1 [R=301,L]
URL の # 以降のものは、サーバーにまったく送信されないため、.htaccess では変更できません。それらを変更する唯一の方法は、JavaScript を使用することです。(JavaScript 内での操作に関する多くの質問を参照してください)