2013-08-26 87 views
0

我有一個問題與Apache的重寫模塊。這就是我試圖做的事情:問題與RewriteCond

我得到了融合(tomcat)運行在服務器與Apache作爲反向代理在前面。 此外,即時通訊使用身份驗證在Apache(表單身份驗證)。因此,如果嘗試訪問[server]/confluence,您將被重定向到包含驗證例程的文件login.php。如果登錄成功,代理讓你訪問tomcat。 其他每個請求都被阻止。這對除[server] /login.php之外的每個請求都很方便,因爲該文件確實存在於htdocs中。每隔請求與

FallbackResource wrong_url.shtml 

處理現在我想阻止對login.php中直接訪問,你會陷入一個死衚衕。

我試圖通過使用$ {} REQUEST_URI作爲phpinfo()函數一個的RewriteCond做到這一點給了我這個:

<server>/confluence (you automatically get redirected to login.php by apache): php says REQUEST_URI = /confluence 

<server>/login.php: php says REQUEST_URI = /login.php 

是有道理的,但。現在我所做的是:

<VirtualHost *:80> 
    ServerName 192.168.2.237 
    RewriteEngine on 

    RewriteCond %{REQUEST_URI} ^/login.php$ 
    RewriteRule ^/login.php$ wrong_url.shtml [L] 

</VirtualHost> 

但這不工作正常。它要麼根本不工作,要麼讓一切崩潰。 請原諒我,如果這是顯而易見的,但我很重要的初學者。任何人都可以告訴我我的錯或爲我提供了一種方法來做到這一點(可以說,這很容易)?

回答

0

您是否檢查過服務器日誌?啓用並設置RewriteLogLevel(至9)並調試請求流。

儘管您不需要mod_rewrite來完成這樣的基本任務,但是請使用mod_alias。

<VirtualHost *:80> 
    ServerName 192.168.2.237 
    Alias /login.php /wrong_url.shtml 
</VirtualHost>