2

この.htaccessファイルで2つのことを達成したいと思います。

1).htmlへのすべてのリクエストは.phpを指します。ユーザーは次の場所に移動します: http ://www.mywebsite.com/contact.html ブラウザの読み込み:http ://www.mywebsite.com/contact.php

2)http://www.mywebsite.com/contactにリクエストすると、contact.phpが読み込まれます(これは、連絡先ページだけでなく、すべてのページに適用されます。

これが私の.htaccessファイルです。

Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L]

正直なところ、私はこれらが何をしているのか分かりません。私が読んだ記事のミスマッシュからそれらをブレンドしました。どんな助けでもいただければ幸いです。

4

3 に答える 3

4

このようなことを試してください。セキュリティへの影響についてはコメントスレッドに従ってください。ただし、これはあなたが求めていることです。

RewriteEngine On
RewriteBase /

# Redirect HTML to PHP
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*).html$ $1.php [L]

# Otherwise, try PHP
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule ^(.*)$ $1.php [L]

# Lastly, fallback to error page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . 404.php [L]
于 2013-03-19T20:37:15.763 に答える
0

htaccessファイルの役割について説明する必要があります。

この例では、htaccessは、例で必要なように、パターンを照合しようとします。

パターンが一致すると、何らかのアクションが発生します。

URLから抽出する必要のあるすべてのデータを()でマークします

ルールごとに、最初の()には$ 1のIDがあり、2番目の()には$2というようになります。

$1が「help」の場合は「helpme.php」ファイルをロードしますが「help.php」ファイルはロードしません。ロードしたいファイルをロードします。

$ 1、$ 2を使用すると、パラメータと値を実際の/翻訳されたURLリクエストに渡すことができます

私の例では、常にindex.phpファイルを使用したかったので、必要なファイルを使用します

Options +SymLinksIfOwnerMatch

RewriteEngine on

RewriteRule ^([a-zA-Z-]+)$ index.php?action=$1 [NC,L]

RewriteRule ^(member)-([0-9-]+)$ index.php?action=member&id=$2 [NC,L]

RewriteRule ^([a-zA-Z-]+)/([a-zA-Z-]+)-([0-9-]+)$ index.php?action=$1&saction=$2&sid=$3 [NC,L]

RewriteRule ^([a-zA-Z-]+)/([0-9-]+)$ index.php?action=$1&id=$2 [NC,L]

RewriteRule ^([0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/(.*).html$ index.php?action=details&id=$1&p1=$2&p2=$3&p3=$4 [NC,L]
于 2013-03-19T20:44:12.800 に答える
0

すべての.htmlファイルが.phpファイルを指すようにしたい場合、そうする簡単な方法は次のようになります。

RewriteRule ([\w\d\-_]+)(\.html)? $1.php [L]

これにより、サブディレクトリを使用することもできます

contact.htmlはcontact.phpにリダイレクトされます

/subdir/page.htmlは/subdir/page.phpなどにリダイレクトされます

于 2013-03-19T20:46:03.950 に答える