2

php ファイルの英語名をオランダ語に置き換えたいと思います。

例: someurl.com/news.php?readmore=4#commentsはsomeurl.com/nieuws.php?leesmeer=4#kommentaarになります。news.php のコードを実行する必要がありますが、引数が同様に機能する必要がある URL に nieuws.php が含まれている必要があります。

htaccess の例をいくつか試しましたが、うまくいきません。

どんな助けでも大歓迎です。

編集:以下の回答と最終的な解決策からの作業の進行状況。

RewriteCond %{QUERY_STRING} ^readmore=(.*)$
RewriteRule ^news.php$ nieuws.php?leesmeer=%1 [R=301,L]

RewriteCond %{QUERY_STRING} !^norewrite[\w\W]*$
RewriteRule ^news.php$ nieuws.php [R=301,L]
RewriteRule ^nieuws.php$ news.php?norewrite [QSA]

RewriteCond %{QUERY_STRING} !^norewrite[\w\W]*$
RewriteRule ^search.php$ zoeken.php [R=301,L]
RewriteRule ^zoeken.php$ search.php?norewrite [QSA]
4

2 に答える 2

2
# 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 内での操作に関する多くの質問を参照してください)

于 2013-05-01T12:33:56.440 に答える