2009-04-07 9 views
5

/foo/.htaccess एक आंतरिक रीडायरेक्टयह काम कैसे करें? रिवाइटकंड% {ENV: UNIQUE_ID}!% {QUERY_STRING}

RewriteRule ^(.*)$ /bar/?%{ENV:UNIQUE_ID} 

/bar/.htaccess को यह पहचानने की आवश्यकता है कि अनुरोध आंतरिक नहीं था, समस्या यह है कि मैं यह समझ नहीं सकता कि तुलनात्मक कार्य कैसे करें

RewriteCond %{ENV:UNIQUE_ID} !%{QUERY_STRING} 

यहां तक ​​कि एक

RewriteCond %{QUERY_STRING} %{QUERY_STRING} 

मेल नहीं खाएगा, मुझे लगता है कि अभिव्यक्ति के दाहिने हाथ में एक वाक्यविन्यास मुद्दा है,% से बचने से मदद नहीं मिलती है।

मैंने परीक्षण किया है कि उपर्युक्त दोनों चर के पास एक आंतरिक रीडायरेक्ट पर एक ही मान है क्योंकि

RewriteRule ^(.*)$ /test/%{QUERY_STRING}/%{ENV:UNIQUE_ID} 

इसे दिखाएगा।

सर्वर अपाचे/2.2.3

धन्यवाद है, लॉरियन

उत्तर

15

दुर्भाग्य से आप mod_rewrite के साथ सीधे दो चर तुलना नहीं कर सकते। (या कम से कम मैं कैसे या तो यह करने के लिए पता नहीं।)

लेकिन इस के लिए एक समाधान नहीं है:

RewriteCond %{ENV:UNIQUE_ID}:%{QUERY_STRING} !^(.+):\1$ 

मैं : चुना विभाजक के रूप में, लेकिन आप यदि आप किसी अन्य विभाजक उपयोग कर सकते हैं चाहना। और यदि आप UNIQUE_ID मानों की संरचना निर्दिष्ट कर सकते हैं, तो आपको यह करना चाहिए।

+1

यह बहुत उपयोगी है! मुझे एहसास नहीं हुआ कि आप इस तरह के कई पर्यावरणीय मूल्यों को जोड़ सकते हैं। –

+0

दरअसल यह जानना जरूरी है !! धन्यवाद! – greydet

0

यदि रेफरर एक ही डोमेन नहीं था, जैसे कि पहली बार कोई व्यक्ति विज़िट करता है लेकिन आपकी वेबसाइट के भीतर किसी लिंक का उपयोग नहीं करता है, तो आप HTTP_REFERRER को देख सकते हैं। छवियों को हॉटलिंकिंग रोकने के लिए उसी तकनीक का उपयोग किया जाता है।

संबंधित मुद्दे