0

Mod Rewrite noobなので、私の無知を許してください。しかし、私がやろうとしているのは、単純なクエリ文字列の削除だけです

から:http://yourwebsite.com/x?section=y

に:http://yourwebsite.com/x/y

次のように、 .htaccessに mod 書き換えルールを追加しています。

ErrorDocument 404 /404

Options +MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteCond %{QUERY_STRING} ^section=(.*)$ [NC]
RewriteRule ^(.*)$ /$1/%1? [R=301,L,NE]

問題は、訪問時に次のことです。

http://yourwebsite.com/x?section=y

私のルールは次のように書き戻します。

http://yourwebsite.com/x.php/y

きれいなURLの.phpはかなり醜いので、取り除くのに苦労しています

mod 書き換えルールの何が問題になっていますか?

4

1 に答える 1

1

ほとんどの場合、次のようなものを探しています。

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d  
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)\/(.+)$ /$1.php?section=$2 [L]

RewriteCond %{QUERY_STRING} ^section=(.*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1/%1 [R=301,L,NE]

2 つの書き換えを行います。

  1. リクエストx/yは内部的に書き換えられますx.php?section=y
  2. へのリクエストx?section=yはにリダイレクトされますx/y

1 つは内部的な書き換えであり、もう 1 つはブラウザーをリダイレクトして、あまり「醜い」URL を表示しないことに注意してください。

1 つのヒント: apaches 書き換えモジュール (RewriteLogおよびRewriteLogLevel) のロギング機能を使用できる場合、これにより、書き換えプロセス内で実際に何が起こっているかについての豊富な詳細情報が提供されます。

于 2012-10-21T06:44:45.283 に答える