1

私は次のようなディレクトリ構造を持っています:

/gallery
----index.php
----/23XASDTAGH
----/24XGA43KJA/

ディレクトリが存在する場合は、modrewriteを使用して書き換えたいのですが。それで:

www.example.com/gallery/23XASDTAGH/

になります

www.example.com/gallery/index.php?gallery=23XASDTAGH

しかし、これを静かに実行したいので、URLは変更されません。今私はこれを持っています:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}/ -d
RewriteRule (.*) /gallery/index.php?gallery=$1 [L]

で動作します

www.example.com/gallery/23XASDTAGH/

しかし、奇妙なことに、末尾のスラッシュを最後から外すと、URLが次のように変更されます。

www.example.com/gallery/23XASDTAGH/?gallery=23XASDTAGH

末尾のスラッシュの有無にかかわらず、どうすれば動作させることができますか?

4

3 に答える 3

1

私は次のことがトリックを行うと思います

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) /gallery/index.php?gallery=$1 [L]

2行目は、要求されたファイル名がディレクトリであることを確認し、ディレクトリである場合は3行目が実際の書き換えを行います

末尾のスラッシュの問題に対処するには、おそらくこれ、またはこのようなものが機能します

RewriteCond %{REQUEST_FILENAME} (.*)/?$
RewriteCond %1 -d
RewriteRule (.*)/$ /gallery/index.php?gallery=$1 [R=301]
于 2012-12-02T00:39:35.670 に答える
0

あなたはこれを試してみたいかもしれません:

RewriteEngine on
RewriteRule ^(gallery)/([a-zA-Z0-9-_=]+)/?$ http://www.example.com/$1/index.php?$1=$2 [R=301,L]

入力したURL(ブラウザのアドレスバーにあるURL)を永続的にリダイレクトします。

www.example.com/gallery/23XASDTAGHまたはwww.example.com/gallery/23XASDTAGH/

www.example.com/gallery/index.php?gallery=23XASDTAGH

于 2012-12-02T01:41:34.717 に答える
-1

?/最終的にそれを理解しました。スラッシュがオプションであると言うために、書き換えルールの式の最後にaが必要でした。なぜ正規表現はそれほど簡単でなければならないのです。8-)

正しい表現:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}     -d
RewriteRule ^([a-zA-Z0-9_-]+)?/$    /gallery/index.php?gallery=$1 [L]
于 2012-12-02T02:17:29.903 に答える