1

私はこのリンクを持っています:

http://mysite.com/subdirectory/something/stuff/index.php

見つかったアイテムを表す1ドルまたは2ドルの変数を使用してその背後にあるすべてを抽出できるように、最初のスラッシュのみに一致する正規表現を使用できますか?「subdirectory/something / stuff/index.php」を返すようにします。

たとえば、私はこの正規表現を使用することを考えました:

(.*)/(.*)

しかし、それはスラッシュごとに繰り返されるので、$ 2を使用すると、URLの最後の部分(この場合はindex.php)のみが返されます。

私が使用している言語はapache(?)で、.htaccessファイルに入れられます。

前もって感謝します!

編集: わかりました、これの背景は、「/ files / test.php」のようなリンクを使用して他のファイルにリンクしているサブディレクトリにいくつかのファイルがあることです。これらのファイルは他のディレクトリがルートフォルダにあることを期待しているためですが、私のサイトではありません。そこで、htaccessファイルを使用して、これらのリクエストをルートフォルダのサブディレクトリにリダイレクトし、すべてが機能するようにすることを考えました。また、リンクは1000を超えるため、すべてのリンクを置き換えることはできません。

4

3 に答える 3

2

あなたの正規表現は貪欲(.*)です。最初の部分を欲張りでないものにしてみてください。

(.*?)/(.*)
于 2012-08-05T00:36:13.910 に答える
1

この正規表現を試してください(要求されたファイルが存在しない場合にのみサブディレクトリにリダイレクトされるため、存在する場合は無限にループしません):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ sub/stuff/$1 [NC,L,R=301]
于 2012-08-05T00:37:23.797 に答える
0
^(https?:\/\/[^\/]*\/)(.*)

2番目のグループには、探しているものが含まれます

于 2017-10-23T18:21:42.343 に答える