2017-02-06 5 views
1

私は解決策を探していましたが、見つけられませんでした。PHP htaccessは、インデックスページを保持しながらパラメータを持つURLを書き換えます

私は私のウェブサイト上のディレクトリを持って、たとえばdomain.com/directory/のために:

問題は次のようです。私はのようにdirectory/の後に追加されるカスタムURLを持つカスタムCMSを作った。私はhtaccessを使用してdirectory/post.php?url=xxxのURLを書き換えました。directory/xxx

問題は、私が使い続けたいindex.phpファイルがあるため問題ではありません。

私はこのようにそれをすることによってそれを修正:

RewriteRule ^directory/subdirectory/(.*)$ directory/post.php?url=$1 [NC,L] [QSA] 

しかし、私は、URL内の余分なサブディレクトリを使用する必要はありません。

directory/をindex.phpで使用しながら、directory/post.php?url=xxxdirectory/xxxに書き換えるにはどうすればよいですか?

私はそれが複雑に聞こえることは知っていますが、私は数日間解決策を探していました。

ありがとうございます!

+0

あなたのhtaccessファイルをルートに位置していますを使用できますか? – starkeen

+0

@starkeenはいそれは –

答えて

1

は、次のルール

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^directory/([^/.]+)/?$ /directory/post.php?url=$1 [QSA,L] 
+0

これはトリックをしました、ありがとう! –

1

私が問題を正しく理解しているかどうかわかりませんが、これはうまくいくはずです。

RewriteRule ^directory/?$ /index.php?url=test 
+0

あなたの提案に感謝しますが、問題はdomain.phpのページをdomain.com/directory/にいつでも訪れてみたいのですが、ディレクトリ/ post.phpをリダイレクトしたいのですか?url = xxx to directory/xxx –

+0

@SenneVandenputteこれはうまくいくはずですが、もう1つのルールの前に追加ルールとして追加する必要があります。このルールは、 'directory /'の後ろに何もない場合はindex.phpに渡され、それ以降のルールの処理を止めるよう指示するには '[L]'フラグが必要です。 'directory /'の後ろに何かがあれば、このルールは失敗し、次のルールが処理されます。 –

+0

@JonathanKuhnありがとうございますが、それはまだ私が探しているものではありません。私は私が探しているものを正確に与えるでしょう。 'mydomain.com/guides /'には、私のウェブサイトのセクションと、特定のトピックに関するガイドと情報が含まれています。このURLにアクセスすると、通常のインデックスページが表示されます。また、 'guide/buy-guides'や' guides/training-guides'のようなファイルもあります。これらはすべて.phpを取り除くために書き換えられます。今、私はpost.phpを書き換えられるパラメータを使用している。だから私は 'domain.com/guides/example'になるには' domain.com/guides/post.php?url = example'が必要ですが、私の他のファイルもアクセス可能にしておきます。 –

関連する問題