1

.htaccess ファイルを構成して .php ファイル拡張子を既に正常に削除しました。ここでの問題は、ユーザーが URL に .php を入力したときに、URL に .php を入力した場合にユーザーをリダイレクトすることでした。たとえば、私の元の URL は

http://mysite.com/home

時々、ユーザーはこのように入力する http://mysite.com/home.phpので、この場合、.php のない URL にリダイレクトしたかったので、http://mysite.com/home

別の例は、URL にパラメーターがある場合です。たとえば、次のようになります。

http://mysite.com/home.php?id=1&uid=100

ユーザーをリダイレクトしたいhttp://mysite.com/home?id=1&uid=100

これを行う方法はありますか?あなたの助けは非常に高く評価され、報われます!ありがとう :)

4

3 に答える 3

2

他のルールが URI を書き換えているため、URI ではなく実際のリクエストと照合する必要があります。だから、このようなもの:

RewriteCond %{THE_REQUEST} \ /(.+)\.php(\?|\ |$)
RewriteRule ^ /%1 [L,R=301]

そのため、誰かが :http://mysite.com/some/path/home.phpと入力すると、ブラウザは にリダイレクトされます (したがって、アドレス バーの URL が変更されます) http://mysite.com/some/path/home

ドキュメント ルート内の php ファイルに対してのみこれを行いたい場合 (例:/home.phpではなく /some/path/to/home.php)、正規表現を微調整します。

RewriteCond %{THE_REQUEST} \ /([^/]+)\.php(\?|\ |$)
RewriteRule ^ /%1 [L,R=301]
于 2013-01-04T02:08:17.180 に答える
0

を使用し.htaccessます。これは、現在自分のサイトで使用しているコードで、次のように置き換え/page.phpられ/page/ます。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^(.*)\/$ $1.php [NC]

これを.htaccess- No name という名前のファイルに入れます。この場合の「拡張子」はファイルそのものです。フォルダーに保存してサーバーにアップロードしpublic_htmlます。または、ベース/パブリックディレクトリが何であれ。

このコードの最後の行が役に立ちます。上記で説明したように.php、file で終わるファイルを末尾が のファイルに置き換えます。/2 行目と 3 行目は に転送http://domain.comされhttp://www.domain.comます。私はあなたのことを知りませんが、そのように見えると思います.

于 2013-01-04T02:06:39.520 に答える
0

ファイルの先頭で次のようなことを試してください。

if (strpos($_SERVER['REQUEST_URI'],'.php')!==false){
$good_path = str_replace($_SERVER['REQUEST_URI'],'.php','');
header('Location: '.$good_path);
}

正規表現を使用して拡張子を確認することをお勧めしますが、これは開始するための簡単な例です。

于 2013-01-04T02:12:08.143 に答える