2012-03-28 7 views
3

でのRewriteRuleをスキップしません。私は、しかし.htaccessのmod_rewriteのは、[S]

RewriteEngine On 
RewriteBase /content/ 
RewriteRule ^login/?$ /content/userlogin.php [NC,L] 


:私はそうのように成功してきた - 私はそれがwww.site.com/content/ (リライトを経由してマスクしないリダイレクト)userlogin.phpからのコンテンツを表示したいです次のように追加します:www.site.com/contenにアクセスしようとするとが直接、私は彼らが.htaccessファイルにwww.site.com/content/ものとエラー/ 404.php

RewriteEngine On 
RewriteBase /content/ 
RewriteRule ^login/?$ /content/userlogin.php [NC,S=1,L] 
RewriteRule ^userlogin\.php$ /content/error/404.php [NC,L] 


で404ページにリダイレクトしたいトン/ userlogin.php 、両方のwww.site.com/content/ ログインとwww.site.com/content/ userlogin.phpショーwww.site.com/content/ エラー/ 404.php

答えて

2

まずS Lディレクティブがそれ以上の書き換えを行うため、= 1は機能しません上。 最初のRewriteRuleは、Apacheがもう一度.htaccessルールを通過するように思われるので、最初の書き換えが起こったかどうかを知る必要があります。

RewriteCond %{ENV:REDIRECT_DONE} !true 
RewriteRule ^userlogin\.php$ /content/error/404.php [NC,L] 

RewriteRule ^login/?$ /content/userlogin.php [E=DONE:true,NC,L] 

だから次のリダイレクトが環境変数が実際にREDIRECT_<variable>に書き換えますし、あなたがこのようにこの1上のRewriteCondを行うことができます発生しますが、このような環境変数を設定することにより、これを行うことができます

希望はこれではなく、あなたのコード内で

+0

これはあなたが書いたのとまったく同じです、ありがとう。私は特定のアプリケーションに基づいて新たな問題に遭遇しました。だから私は敗北を認めてしまう前にそれを理解しようとします。乾杯! (ビヨンという男から) – iverSUN

0

使用%{THE_REQUEST}変数を支援します。

RewriteEngine On 
RewriteBase /content/ 

RewriteRule ^login/?$ content/userlogin.php [NC,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+userlogin\.php[\s\?] [NC] 
RewriteRule^content/error/404.php [L]