2017-11-10 35 views
0

現在、1つのURL書き換えルールに問題があります。 [私はApache 2.4.23で動作しています]URL隠しルールで書き直し

特定のページのリダイレクトを試みています。ここに私のルールがあります:

RewriteRule ^clubs[^/]?$ club.php?job=display [L,NC]<br /> 
RewriteRule ^club/([^/]*)$ club.php?job=detail&name=$1 [L]<br /> 
RewriteCond %{REQUEST_URI} !club\.php          [NC]<br /> 
RewriteRule ^club/([^/]+)/?(.+)?/?  club.php?job=detail&name=$1&action=$2   [NC,L] 

"クラブ"のルールはうまくいきます。しかし、クラブのためのものは働いていない。 私がURL http://mysite/clubに行った場合、それはすでにhttp://mysite/club.phpに書き換えられていることがわかりますか?
もし私がURL http://mysite/club/clubNameに行くと、それはすでにhttp://mysite/club.php/clubNameに書き換えられているのがわかりますか?
これはすべて、ファイルclub.phpが存在するためです。私が 'club'を 'anythingElseButNonExistingFile'にリダイレクトしてしまえば、それはうまくいったでしょう。 .htaccessファイル内のすべての行を削除しても、これが発生します。だから私は別の.htaccessファイルにアクセスできない他のルールがあると思う。私が行くしようだから今、

RewriteRule ^club.php/(.+)      club.php?job=detail&name=$1 [L]<br /> 
RewriteCond %{REQUEST_URI}     !club\.php          [NC]<br /> 
RewriteRule ^club/([^/]+)/?(.+)?/?  club.php?job=detail&name=$1&action=$2   [NC,L]<br /> 

は、だから私はに「クラブ」の私のルールを変更し
http://mysite/club/clubName、それは動作しますが、それは良くない
http://mysite/club.php/clubName?job=detail&name=clubName
にリダイレクトしますが、作業中です...

http://mySite/club/clubName/addPhotoにアクセスしようとすると、urlが正しく書き換えられません。私が取得: http://club.php/clubName/addPhoto?job=detail&name=clubName%2FaddPhoto 私はこれを取り除く方法がわからない...

私は、これはあまりにも混乱しないし、誰かが解決策を持っていることを願って...事前に感謝を!

答えて

0

しかし、クラブ用のものは機能していません。私がhttp://mysite/clubというURLに行くと、それはすでにhttp://mysite/club.phpに書き換えられているのがわかりますか?

.htaccessでcontent negociationOptions -MultiViewsを無効にする必要があります。

そして私はURL http://mysite/club/clubNameに行けば、私はそれがすでにhttp://mysite/club.php/clubNameに書き換え中されていることを見ることができますか?

これは、コンテンツ交渉とPathInfoを機能(AcceptPathInfo directiveを参照)の組み合わせのせいです。 PathInfo機能では、コンテンツネゴシエーションが内部的にclub.phpに書き換えられている間に、ファイルの後ろに余分な(そして、不在の)パス(例では/ clubName)を許可します。

ので、書き換えを行う場合、これらのステートメント(あなたの.htaccessファイル内)の両方を除去するためには良い考えかもしれません気にすることないように:

Options -MultiViews 
AcceptPathInfo off 
+0

[OK]を、これは完璧に動作し、私の問題を解決しました!参考になったブックマークに参考にしていただき、ありがとうございました;-) –

関連する問題