2011-01-20 17 views
2

パーマリンクがオンになっているWordPressサイトと並行して構築しているアプリケーションで作業しています。だから、htaccessの後に、wordpressのcatch-allを扱う他の書き換えがあります。しかし、私は自分の書き換えを実行する前に、書き直しを試みています。 - そして私の後で[L]を使っていてください。 スラッシュまたはスラッシュを許可するオプションを末尾に追加しようとするまで、すべてが完璧に動作しています(まだ一致しています)。RewriteRuleオプションの末尾のスラッシュの問題

は、ここでは、このサーバー上で500エラーをスローものの例です:

RewriteRule ^app/([^/]+)/?$ /app/$1\.php [L,QSA] 

http://<domain>.com/app/login 
or 
http://<domain>.com/app/login/ 

しかし、次の作品だけで罰金、およびhtaccessファイル内の前の例を超えています。

RewriteRule ^app/p/([^/]+)/?$ /app/page.php?page_slug=$1 [L,QSA] 

http://<domain>.com/app/p/styles 
or 
http://<domain>.com/app/p/styles/ 

私はほとんどまたはまったく成功しない変形を試みました。

RewriteRule ^app/([^/]+)/{0,1}$ /app/$1\.php [L,QSA] 
and 
RewriteRule ^app/([^/]+)[p]/[\p]?$ /app/$1\.php [L,QSA] 

答えて

2

あなたのターゲットの場所/app/$1.phpは完全にあなたの元の場所^app/([^/]+)/?$のために一致しているためです。したがって、ページは自分自身にリダイレクトされます。

RewriteCond %{REQUEST_URI} !\.php 
RewriteRule ^app/([^/]+)/?$ /app/$1.php [L,QSA] 
+0

となっております。したがって、この場合、ソースをターゲットと異なるようにするには、最後にスラッシュが必要です。そして、この周りの唯一の方法は、ターゲットが変更できないため、異なるソース名を選択することだと思われます。 – tdurham

+0

私の例のようにRewriteCondをルールの前に追加するだけです。 – akond

関連する問題