4

ウェブサイトに他のページをwww.example.com/pageone.htmlではなくwww.example.com/pageone/リンクとして表示させようとしています。

問題は、.htaccessを使用してそれを行う方法を読んでいて、コマンドを理解していないために混乱してしまうことです。

ただし、最初のステップは、これを.htaccessファイルに書き込むことであることを理解しています。

RewriteEngine On

この手順の後、!-d、{REQUEST_FILENAME}、^(。*)、およびそのすべてのプログラミングテキストが何であるかまったくわかりません。参照できるドキュメントはありますか?

または、.htaccessファイルを構成して、

www.example.com/pageone.html

、URLに入力する必要があるのは

www.example.com/pageone/

とPHPファイルなども?

4

3 に答える 3

9

まず、公式ドキュメントがあります。あなたの特定の問題を解決するために、私はこのように行きます:

RewriteEngine on #Turn on rewrite

RewriteCond %{REQUEST_FILENAME} !-f #If requested is not a filename...
RewriteCond %{REQUEST_FILENAME} !-d #And not a directory
RewriteRule ^([^/]+)/?$ /$1.html [L] #Preform this redirect

sはRewriteCond、次の次のルールにのみ適用されます。複数のルールがある場合は、それぞれの条件を記述する必要があります。

これで、Apacheサーバーは要求されたパス(www.example.com/以降のすべて)と一致し、指定したルールのいずれかと一致するかどうかを確認します。この場合、次は1つだけです。

^([^/]+)$

この正規表現は、スラッシュではない任意の数の文字に一致し/、その後にオプションの末尾のスラッシュが続きます。一致するものが見つかった場合は、リクエストを2番目のパラメータに書き換えます。は「角かっこで一致したものは何でも」/$1.html$1意味します。この場合はすべての非スラッシュ文字です。

フラグは、この[L]ルールが一致した場合にルールの検索を停止するように書き換えエンジンに指示します。

結論として、サーバーでスリッと書き直されますwww.example.com/whatever/www.example.com/whatever.html

于 2012-05-05T09:03:27.443 に答える
2
RewriteEngine on
RewriteBase /

RewriteRule ^([^/]+)$ /$1.html

この書き直しに必要なのはこれだけです。基本的に、「スラッシュ以外のものはすべて変数に割り当てられます$1。したがって、/fooは/foo.htmlを指します。

于 2012-05-05T08:40:41.460 に答える
1

公式ドキュメントについては、Apachehttpdmod_rewriteを参照してください。
Googleでは、などのキーワードで検索できますurl rewriting tutorial
奇妙な文字は正規表現と呼ばれます。学ぶのは簡単なことではありませんが、それらについてのチュートリアルはたくさんあります。
PS:これは正解ではありませんが、URLの書き換えがどのように機能するかをさらに理解するためのいくつかの要素です。

于 2012-05-05T08:48:39.897 に答える