0

ニュースコンテンツを表示するWebページがあります。ページへのURLは次のようになり example.com/news.php?newsid=iphone4-releasesます。次のようなURLからページにアクセスできるようにします。example.com/news/iphone4-releases

.htaccessファイルにこれらの変更を加えました

RewriteCond %(REQUEST_FILENAME) !-d [OR]
RewriteCond %(REQUEST_FILENAME) !-f [OR]
RewriteCond %(REQUEST_FILENAME) !-l

RewriteRule .* - [L]

RewriteRule ^(.*)$ http://example.com/news.php?newsid=$1 [NC]

このコードは実際にはURLを置き換えますが、GET変数なしで同じURLを保持したいと思います。また、この方法を使用すると、URLは次のようexample.com/iphone4-releasesになりますが、example.com/news/iphone4-releases

4

3 に答える 3

1

リダイレクトによって変数が失われるため、GET変数を省略し、.htaccessを使用して303リダイレクトを実行することは期待できません。リダイレクト先のページにPOSTを使用してフォームを送信し、そのページから実際のPHPスクリプトへのシンボリックリンクを作成してから、クライアントのブラウザをリダイレクトするための書き換えルールを作成します

/news/追加されたセクションを組み込んだ上記のリダイレクトは次のとおりです。

RewriteEngine On
RewriteBase /
RewriteCond %(REQUEST_FILENAME) !-d [OR]
RewriteCond %(REQUEST_FILENAME) !-f [OR]
RewriteCond %(REQUEST_FILENAME) !-l

RewriteRule .* - [L]

RewriteRule ^(.*)$ news/news.php?newsid=$1 [NC]

PHPのみを使用してリダイレクトを実行することもできます。

header("Location: http://www.redirecthere.com");
于 2012-07-06T13:14:47.930 に答える
1

これは、記事名にaZ、数字、ダッシュのみを使用することを前提としています。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^news/([a-zA-Z0-9\-]*)$ /news.php?newsid=$1 [NC]

編集:

このリンクはパラメータについて説明しています:http: //httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

そして-lについて:

'-l'(シンボリックリンク)TestStringをパス名として扱い、存在するかどうかをテストします。これはシンボリックリンクです。

そして、この例では数字が機能します(例:/ news / iphone2003-new-launch)

申し訳ありませんが、急いでいます:)

于 2012-07-06T13:02:34.933 に答える
0

[OR]要求されたファイルをファイルにせず、ディレクトリにせず、シンボリックリンクにしたくないので、両方を削除する必要があるかもしれません。

RewriteCond %(REQUEST_FILENAME) !-d
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-l

RewriteRule ^/(\w+)/(.*?)/?$      $1.php?newsid=$2 [NC,L]

ドメイン全体がルール内にある必要はありません

于 2012-07-06T13:00:22.093 に答える