1

拡張URLから拡張子のないURLにリダイレクトしたい。たとえば、/contact は /contact.php の内容を読み取る必要があります。これを達成するために、次のルールを使用します。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ $1.php [L,QSA]

「id」という変数を持つ test.php というファイルがあります。/test/1 からの読み取りリクエストを test.php?id=1 にリダイレクトしたい

これを達成するために以下を使用します。

RewriteRule ^test/([0-9]+)/?$            /test?id=$1      

何らかの理由で test/1 ファイルを呼び出すと、500 内部サーバー エラーが発生します。PHP拡張機能を非表示にするルールを削除すると、再び機能します

また、拡張子付きの URL で永続的なリダイレクトを強制するにはどうすればよいですか? たとえば、誰かが /contact.php に到達するために結びついている場合、/contact にリダイレクトする必要があります

ありがとう

4

2 に答える 2

1

次のコードを使用できます。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# your existing rule (fixed)
RewriteRule ^test/([0-9]+)/?$ /test.php?id=$1 [L,NC,QSA]

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]

## To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ /$1.php [L]
于 2013-03-22T20:44:16.937 に答える
0

これは私の中にあります... Apacheでオンになっhtaccess ていることを確認してください...mod_rewrite

RewriteEngine On
# Redirect .php requests to url without an extension
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]
RewriteRule ^([^/.]+)$ $1.php [L]
# This will remove the trailing slash unless it's a directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L]
于 2013-03-22T20:46:42.963 に答える