को छोड़कर मैं अपाचे 2.2 वर्चुअलहोस्ट घोषणा में mod_rewrite का उपयोग करके किसी अन्य डोमेन पर अपने डोमेन पर सभी अनुरोधों को पुनर्निर्देशित करने का प्रयास कर रहा हूं। इसमें एक अपवाद है - मुझे रीडायरेक्ट होने के लिए /audio
पथ पर सभी अनुरोध चाहिए।mod_rewrite नियम सभी अनुरोधों को पुनर्निर्देशित करने के लिए एक विशिष्ट पथ
मैंने ऐसा करने के लिए एक रिवाइटकंड और रिवाइटरूल लिखा है लेकिन यह बिल्कुल सही नहीं है और मैं यह नहीं समझ सकता कि क्यों। नियमित अभिव्यक्ति में स्ट्रिंग "/ ऑडियो" के लिए एक नकारात्मक लुकहेड होता है, लेकिन किसी कारण से यह मेल नहीं खाता है। यहाँ परिभाषा है:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net(?!/audio) [NC]
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]
अगर मैं करने के लिए RewriteCond बदलने के लिए:
RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net/(?!audio) [NC]
(यानी नकारात्मक अग्रदर्शी भाग के बाहर फ़ॉरवर्ड स्लैश डाल) तो यह काम करता है, लेकिन इस के नकारात्मक पक्ष यह है कि अनुरोध है पीछे की ओर स्लैश के बिना mydomain.net पर पुनर्निर्देशित नहीं किया जाएगा।
क्या कोई यह बता सकता है कि मैं क्या गलत कर रहा हूं?
(नोट:! RewriteRule सा ऊपर StackOverflow.com से जोड़े जा रहे हैं में डोमेन के आसपास कोण कोष्ठक - वे वास्तविक कोड में नहीं हैं)
यहाँ नियम हैं:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/mydomain.net/htdocs"
ServerName www.mydomain.net
ServerAlias mydomain.net
RewriteEngine on
RewriteCond {REQUEST_URI} !^/audio
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]
RewriteLog logs/mod_rewrite_log
RewriteLogLevel 3
ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>
धन्यवाद @mercutio - कि सही समझ में आता है लेकिन यह अभी भी काम करने के लिए प्रतीत नहीं होता।
(2) init rewrite engine with requested uri /audio/something.mp3
(3) applying pattern '^(.*)$' to uri '/audio'
(2) rewrite '/audio' -> 'http://www.newdomain.net/'
(2) explicitly forcing redirect with http://www.newdomain.net
(1) escaping http://www.newdomain.net for redirect
(1) redirect to http://www.newdomain.net [REDIRECT/301]
के बाद से REQUEST_URI /audio
के साथ शुरू होता है मैं फिर से लिखना पर ध्यान नहीं दिया की उम्मीद करेंगे:
यहाँ जब मैं http://mydomain.net/audio/something.mp3 के लिए अनुरोध करने के लिए क्या mod_rewrite लॉग कहते है।
पैटर्न लागू करने के यूरी '/ ऑडियो' के लिए लगता है जैसे यह एक अलग पैटर्न को संसाधित कर रहा है। या शायद तर्क अभी पीछे की तरफ है। क्या आप अपना पूरा नियम निर्धारित कर सकते हैं? – mercutio