2

ドメインのリンクをリダイレクトしようとしています。私が達成しようとしているのは、ユーザーが次のリンクをクリックしたときです。

mydomain.com/index.php?dir=myfolder

彼を正確にこのURLにリダイレクトしてほしいのですが、ブラウザバーにこのURLが表示されるはずです。

mydomain.com/myfolder

リンクが確立される方法にアクセスできないため(これはphpサイトです)、.htaccessファイルだけでこれを実行しようとしています。

これは私が持っているものです:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} subdomain.mydomain.com
RewriteCond %{REQUEST_URI} (.*)/style.css [OR]
RewriteCond %{REQUEST_URI} (.*)/script.js [OR]
RewriteCond %{REQUEST_URI} (.*)/logo.png
RewriteRule (.*) http://www.subdomain.com%{REQUEST_URI} [R=301,NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?dir=$1 [L]

したがって"mydomain.com/myfolder"、ブラウザに入ると正常に動作し、アドレスバーのURLはこのままです。しかし、私が入力する"mydomain.com/index.php?dir=myfolder"と、それも機能しますが、URLも同じままです(これは私が望むものではありません)。どういうわけか.htaccess-fileでURLを変更し、それを(すでに持っているように)php-schemeに書き直す必要があると思います。私は今いくつかのアプローチをしましたが、これを行う方法がわかりません。あなたが私の質問を理解し、私を助けることができることを願っています!

ありがとうございました!

EDIT:

解決策(@anubhavaに感謝):

RewriteEngine on
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?dir=([^\s]+) [NC]
RewriteRule ^ %1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?dir=/$1 [L]
4

3 に答える 3

2

既存の.htaccessファイルの最後に次のルールを追加するだけです。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?dir=([^\s]+) [NC]
RewriteRule ^ %1? [R=301,L]
于 2012-10-19T14:55:14.677 に答える
1

あなたの質問はに/index.php?dir=exampleリダイレクトすることについてだと思います/example。次の例では、永続的なリダイレクトを発行します。

RewriteRule ^index\.php\?dir=?$ /$1 [NC,R=301,L]
于 2012-10-19T14:41:48.443 に答える
0

この形式のURLをmydomain.com/index.php?dir=myfolderとして見栄えよくするには、ファイルmydomain.com/myfolderで次の書き換えルールを試してください。.htaccess

RewriteEngine on
RewriteRule ^([^/\.]+)/?$ /index.php?dir=$1 [L]
于 2012-10-19T14:34:20.340 に答える