1

私はこれと非常によく似た問題を抱えています:Apachemod_rewrite-きれいなURLを持つディレクトリよりもファイルを優先します

しかし、それは同じではなく、上記のリンクで言及されている解決策は私にはうまくいきません。


私のディレクトリ構造は次のようになります。

/pages/articles/january.php
/pages/articles.php
/pages/home.php
/articles/
/index.php

今、私はindex.phpページに含めています(URLによって異なります)。

たとえば、ユーザータイプがアドレスwww.domain.com(またはwww.domain.com/home)の場合、index.phpには/pages/home.phpが含まれます。

しかし、次のURLを入力すると、www.domain.com / articlesは次のようなリンクになります: www.domain.com/articles/?page []=articles(つまり、index.phpには/pages/は含まれませんarticles.phpファイル)

一方、これは完全に機能します:www.domain.com/articles/january

これは私のhtaccessファイルです:

RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9+]*)/([a-zA-Z0-9+]*)$ %{DOCUMENT_ROOT}/index.php?page[]=$1&page[]=$2 [QSA,L]
RewriteRule ^([a-zA-Z0-9+]*)$ %{DOCUMENT_ROOT}/index.php?page[]=$1 [QSA,L]

サブページを持つことができるので、ページに配列を使用します(そして、サブページは正常に機能します!)。

編集:私はこれを見つけましが、それは私の問題を解決しません:(


なぜこれを行うのか、そしてそれを修正する方法を誰かに教えてもらえますか?

または、ディレクトリではなくファイルを優先するにはどうすればよいですか?

編集2:「/ articles /」ディレクトリを削除して解決しましたが、htaccessファイルのルールで機能させる方法に興味があります。

4

1 に答える 1

1

上記のコメントによると、元の問題は記事ディレクトリを削除することで回避されましたが、それでもそのような状況でディレクトリを処理できるようにしたいと考えていました。

おそらく、2セットのルールに分割することをお勧めします。ディレクトリをキャッチするために-dフラグを使用する以前のルールを用意して、必要に応じてディレクトリを異なる方法で処理できるようにします。RewriteCondまたは、フラグ()を否定して最初のルールのディレクトリを無視!-dし、後のルールでそれらをキャッチします。

于 2013-01-31T01:06:39.327 に答える