Web サイトの .htaccess を構成しています。
からのURLを書き換えたい
http://www.example.com/search/foo/bar/baz/ ... (任意の数のサブディレクトリ)
に
http://www.example.com/forms/index.php?i=foo--bar--baz-- ...
別のオプションは、すべての URL をリダイレクトすることです
http://www.example.com/search/foo/bar/baz/ ...
に
http://www.example.com/forms/index.php
そして、index.php に uri を解析させます。
上記の2番目の代替案を実装するために、次のmod_rewriteを試しました
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ /forms/index.php
しかし、404エラーが発生します。
注: 問題があるかどうかはわかりませんが、これは Wordpress サイトで発生しています。.htaccess全体は
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ /forms/index.php
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
どんな助けでも大歓迎です。
ありがとう。
EDIT1:
私はいくつかの進歩を遂げました。RewriteRule の最後に [L] がありませんでした。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ /forms/index.php [L]
動作します。ここで、URL の /search を確認する必要があります。
EDIT2:
さらなる進歩:
RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^search/(.*)$ http://www.example.com/forms/index.php?i=$1 [QSA,L]
それは働いているようです。search/ の後にパラメーター i としてすべてを渡します。
ここで、元の URL をアドレス バーに表示したいと思います (書き直したものではありません)。それを行う方法はありますか?
ありがとう