2014-03-28 20 views
2

我正在使用Drupal站點,並且客戶端請求阻止除定義的URL別名以外的任何直接訪問。也就是說,如何使用Apache阻止特定的URL類型?

  • www.clientsite.com - >允許
  • www.clientsite.com/some-internal-page - >允許
  • someclientsite.com/node/add - >允許
  • www.clientsite.com/node - >拒絕
  • www.clientsite.com/node/72 - >拒絕

正如你所看到的,我需要禁用/node/node//node/[0-9]*同時允許任何/node/some-link-text

我已經試過

<LocationMatch ^/node[\/]?([\d]*) > 
    SetHandler server-status 
    Order deny,allow 
    Deny from all 
</LocationMatch> 

,但它並不適用於/node/add工作,雖然所有其他鏈接的工作。我需要什麼正則表達式來適應這些條件匹配?

回答

1

試試這個:

RewriteEngine On 
RewriteRule ^/node/?$ - [F] 
RewriteRule ^/node/[0-9]+$ - [F] 
+0

這工作,謝謝! – Jason

+0

可以接受答案之前有時間限制。 – Jason

+0

沒問題。謝謝。 – arco444

1

您可以編寫RewriteRul發送403如下。

的.htaccess

RewriteEngine On 
RewriteRule ^node/?$ - [F] 
RewriteRule ^node/[a-zA-Z/]*[0-9]+[a-zA-Z/]*$ - [F] 

這將爲工作,

www.clientsite.com/node/add - >允許

www.clientsite.com/node - >Denied

www.clientsite。 COM /節點/ 72 - >拒絕

,以及你可能需要一些額外的功能,

www.clientsite.com/node/add/another/parameter - >允許

www.clientsite.com/node/add/another/72/param/ - >Denied

+0

閱讀問題。 '/ node/some-link-text'需要被允許。這會阻止它。 – arco444

+0

對不起,它是我的錯誤,請等待我更新 –