1

ここに来るのは初めてで、私は mod_rewrite と regex の初心者なので、何か見落としがあれば教えてください。ここや他の場所で一日中検索しましたが、必要なものが正確に見つかりませんでした.

次のことを実現する RewriteConds と RewriteRules のセットを探しています。

  • URL に存在する場合は、www を削除します
  • URL にまだ存在しない場合は、フォルダにリダイレクトします
  • 残りの URL を保持する

特定のサブフォルダー (/webapp と呼びます) に Web アプリがインストールされており、URL に wwwを必要としないように構成されています。www. アプリを掘り下げて再プログラムすることはできますが、.htaccess と mod_rewrite を介してユーザーのためにそれを処理し、同時に入力を忘れた場合はそれらをフォルダーにダンプし、これらすべてを 301 リダイレクトで行いたいと思います。 .

たとえば、次のようなリクエストを希望します

http://www.mydomain.org/webapp/anything
http://www.mydomain.org/anything
http://mydomain.org/anything

リダイレクト先

http://mydomain.org/webapp/anything

そして明らかに、「正しい」URL (で始まるものhttp://mydomain.org/webapp/) が要求された場合、それはまったく書き換えられません。

これまでの私の最良の推測は次のとおりです。

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.mydomain\.org$ [NC]
RewriteRule ^(.*)$ http://mydomain.org/$1 [R=302]

RewriteCond %{REQUEST_URI} !^/webapp.*$ [NC]
RewriteRule ^(.*)$ http://mydomain.org/webapp/$1 [R=302]

http://htaccess.madewithlove.be/によると、これは機能しているように見えましたが、実際にはそれほどではありませんでした。

前もって感謝します。

4

2 に答える 2

0

ここで自分で答えを見つけました:BowlerHat

このように見えます:

# First just remove the www
RewriteCond %{HTTP_HOST} ^www\.mydomain\.org$ [NC]
RewriteRule ^(.*)$ http://mydomain.org/$1 [L,R=301]

# Now redirect into the folder
RewriteCond %{REQUEST_URI} !webapp/ [NC]         # if the provided URI does not start with /webapp,
RewriteRule (.*) http://mydomain.org/webapp/ [L,R=301]         # redirect user to /webapp/ root

ユーザーがmydomain.org/somethingsomethingにアクセスしようとした場合、/ webapp/somethingsomethingではなくwebappのルートに送信することにしました。

于 2012-10-22T14:27:06.263 に答える
0

試す:

RewriteCond %{HTTP_HOST} ^www\.mydomain\.org$
RewriteRule ^ mydomain.org/$1 [L,R=301]

RewriteCond %{REQUEST_URI} !^/webapp.*$
RewriteRule ^/(.*) mydomain.org/webapp/$1 [L,R=301]
于 2012-10-18T22:38:23.943 に答える