0

としてページをロードするように設定された Web サイトで作業していhttp://domain.tld?p=pagenameますが、ページにアクセスできるようにしたいと考えていますhttp://domain.tld/pagename(単純に、ページが短くて簡単にアクセスできるためです)。

mod_rewriteこれがinで実行できることは理解して.htaccessいますが、サーバー関連のことになると、私は少し面倒です。これは望ましいことですか? もしそうなら、どのように行われますか?

(ああ、ホームページにはクエリ文字列がありません。ただ、http://domain.tldこれで壊れてほしくないのです。)

4

1 に答える 1

1

Apache の構成で遊んでからしばらく経ちましたが、次のようなものが必要です。

RewriteEngine  on
RewriteRule    ^/([^/])/?  ?p=$1 

最初の部分は正規表現で、2 番目の部分は perl のs/foo/bar/構文に見られるのとよく似た置換です (ただし、正規表現の実装は常にわずかに異なるため、もちろん perl とはいくつかの違いがあります)。

これは一致しないhttp://domain.tldか、満たされていないためオプションではありませんhttp://domain.tld/。正規表現の最後にあるのは、均等に処理([^/])することです(それを行いたい場合)/?http://domain.tld/pagenamehttp://domain.tld/pagename/

上記のコードは、クエリ文字列で渡される他のパラメーターがある場合、必ずしも機能しないことに注意してください。しかし、あなたはそれを求めていませんでした...

ページに追加のクエリ文字列パラメーターが含まれるようになったり、必要になったりすると、URL の書き換えが非常に複雑になる可能性があることに注意してください/area/pagename。この追加された複雑さにより、最終的にこのページを読むのに多くの時間を費やすことになります。

http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

おそらくそれは価値があります...その質問に対する答えを知っているのはあなただけです:)

于 2013-03-01T00:11:33.520 に答える