Htaccess का उपयोग करके सिर्फ wp कंटेंट / थीम / नाम / छवियों को मास्क करना


10

मैं कोशिश कर रहा हूं कि मुझे लगा कि मेरे url को मास्क करने में वास्तव में कुछ सरल होगा, लेकिन यह काम करने के लिए नहीं मिल सकता है। मैं पूर्ण URL में टाइप किए बिना अपने img टैग में छवियों से लिंक करने में सक्षम होना चाहता हूं।

अर्थात

Current url:  http://server.com/wp-content/themes/standard/images/img.jpg
or
<img src = "http://server.com/wp-content/themes/standard/images/img.jpg" />

हालाँकि मेरे पृष्ठों पर मैं बस करना चाहता हूँ

<img src="http://server.com/images/img.jpg" />

हालाँकि मेरे लोकलहोस्ट पर कुछ भी काम नहीं कर रहा है। मैं विंडोज 7 मशीन पर अपाचे सर्वर चला रहा हूं। मैं एक .htaccess का उपयोग करने की कोशिश कर रहा हूं जो मैंने ऊपर उल्लेख किया है। यहाँ मेरी वेबसाइट के मूल में मेरी .htaccess फ़ाइल है।

अद्यतन: मैंने नीचे दिए गए ZweiBlumen सुझाव की कोशिश की, लेकिन वह काम नहीं करता था। मैंने फिर गीटर के सुझाव की कोशिश की और अपने एडमिन फोल्डर के misc.php में री-राइट का तरीका जोड़ा। मैं तब अपने पर्मलिंक्स पेज पर गया और सेव मारा। ऐसा करने का नतीजा यह हुआ कि मेरा .htaccess फोल्डर फिर से लिखा गया और इसके द्वारा उत्पादित आउटपुट नीचे है।

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^css/(.*) /wp-content/themes/standard/css/$1 [QSA,L]
RewriteRule ^js/(.*) /wp-content/themes/standard/js/$1 [QSA,L]
RewriteRule ^images/(.*) /wp-content/themes/standard/images/$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

हालाँकि, मैं अभी भी अपने इमेज फ़ोल्डर में नेविगेट नहीं कर सकता जैसे:

http: //localhost/images/myimage.jpg

मुझे जो भी मिला है वह एक ऐसा पृष्ठ है जो नहीं मिला है। यहोशू के सुझाव पर पूरी तरह से काम किया है, लेकिन मैं छवियों के URL के साथ संयोजन के रूप में इसका उपयोग करने की उम्मीद कर रहा हूं।

क्या कुछ और है जो मैं गलत कर रहा हूँ, या जाँच करनी चाहिए?

अपडेट करें:

इसे पढ़ने वाले किसी भी व्यक्ति के लिए, मैंने बस फिर से कोशिश की और इसने Geerts और जोशुआ विधियों के संयोजन का उपयोग करके काम किया है। मेरा फ़ायरफ़ॉक्स ब्राउज़र उस पृष्ठ को कैच कर रहा है जो मुझे यह सोचने के लिए प्रेरित कर रहा था कि यह नहीं था।

जिस कारण से मैं इसे .htaccess फ़ाइल में डालने के साथ गया, वह यह है कि यह फ़ाइल हर बार ओवरराइट की जाती है जब मैं पर्मलिंक्स एडमिन पेज पर जाता हूं और इसलिए मैं इसे दुर्घटना से नहीं लिखना चाहता। मुझे लगता है कि मैं इसे किसी भी तरह से बंद कर सकता हूं लेकिन यह सुनिश्चित नहीं है कि यह कैसे करना है। तीनों जवाबों ने कुछ हद तक मदद की।

जवाबों:


10

की जाँच करें जड़ें वर्डप्रेस थीम । वे वही करते हैं जो आप URL के साथ चाहते हैं।

यहां उनकी जड़ों से एक स्निपेट-htaccess.php फ़ाइल है:

add_action( 'generate_rewrite_rules', 'roots_add_rewrites' );

function roots_add_rewrites($content) {
  $theme_name = next( explode( '/themes/', get_stylesheet_directory() ) );
  global $wp_rewrite;
  $roots_new_non_wp_rules = array(
    'css/(.*)' => 'wp-content/themes/' . $theme_name . '/css/$1',
    'js/(.*)'  => 'wp-content/themes/' . $theme_name . '/js/$1',
    'img/(.*)' => 'wp-content/themes/' . $theme_name . '/img/$1',
  );
  $wp_rewrite->non_wp_rules += $roots_new_non_wp_rules;
}

नोट: यदि आप इसे सीधे एक .htaccessफ़ाइल में खींच सकते हैं , जैसा कि ज़ेवेब्लुमेन के उत्तर में है, तो आपको उस समाधान को चुनना चाहिए क्योंकि यह संभवतः सबसे अधिक अनुकूलित है।


1
हालांकि इस विधि के लिए मैं जो कुछ नहीं देख रहा था, उसने अंत में नियमों को डालने के लिए प्रशासक permalinks पेज के माध्यम से। मैंने जोशुआ के साथ मिलकर इस पद्धति का उपयोग किया है और यह पूरी तरह से काम करता है। सहायता के लिए धन्यवाद।
dreza

कूल, प्रदर्शन के लिए यह एक अच्छी बात है कि उन्होंने पुनर्लेखक को .htaccess में भी रखा है।
गीर्ट

मुझे लगता है कि आपके .htaccess में हार्ड-कोडिंग की तुलना में यह विधि पूरी तरह से ठीक है। क्योंकि यहां आप किसी थीम के फंक्शन्स के आधार पर भी इसे मैनेज कर सकते हैं। अगर जरूरत हो तो इन नियमों को बंद कर दें।
जेक

यह वास्तव में Wordpress के लिए सबसे अच्छा तरीका है। पर्मलिंक्स संरचना को अपडेट करते समय WP रिवाइट के नियम केवल उत्पन्न होते हैं, इसलिए आप यहां जो कुछ भी कर रहे हैं, वह अनिवार्य रूप से इसे अपने .htccess में वैसे ही लिख रहा है; जेक के रूप में एक अधिक प्रबंधनीय फैशन में यद्यपि।
पोस्पी

1
शायद wp-content/themesवे हार्ड कोडित नहीं होना चाहिए , क्योंकि वे लक्ष्य बढ़ रहे हैं। global $wp_theme_directoriesसभी पंजीकृत थीम निर्देशिकाओं के माध्यम से लूप का उपयोग किया जा सकता है और वर्तमान में सक्रिय थीम की पहचान कर सकते हैं। और कंटेंट डायर का एड नाम WP_CONTENT_DIRप्राप्त करने के लिए इस्तेमाल किया जा सकता है define()। वैसे भी, इस जवाब पर +1।
केसर

6

यदि समस्या केवल छवियों के साथ है, लेकिन सीएसएस या जावास्क्रिप्ट नहीं है, तो मुझे लगता है कि आपके रीवेरिएट में एक टाइपो है। मुझे लगता है कि आपके "$" के बाद "1" गायब है:

RewriteRule ^images/(.*)$ wp-content/themes/standard/images/$1 [L]

इसके अलावा, आप उन अतिरिक्त कथनों को प्रारंभिक नियम के नीचे रखने का प्रयास कर सकते हैं, अर्थात इस पंक्ति के नीचे:

RewriteRule ^index\.php$ - [L]

हालांकि यकीन नहीं होता।


ओह। यह नहीं देखा। धन्यवाद मैं देता हूँ कि एक जाना।
dreza

4

आप निम्न तरीके से उसके लिए एक शोर्ट क्यों नहीं बनाते हैं।

function img_folder_shortcode( ) {
   return get_stylesheet_directory_uri() . '/images';
}
add_shortcode( 'img_folder', 'img_folder_shortcode' );

और फिर सामग्री क्षेत्र में कहीं भी निम्नलिखित शोर्ट का उपयोग करें।

[img_folder]/img.jpg
<img src="[img_folder]/img.jpg" alt="img" />

हम्म, मैं सामग्री क्षेत्र में [img_folder] का उपयोग करने की क्षमता को पसंद करता हूं, हालांकि मैं वास्तव में केवल चाहता था / छवियां यूआरएल पूरी तरह से उजागर नहीं हों। हालाँकि, मैं इसे जियर्ट्स और ज़ेविब्लमेंस के साथ जोड़कर देख सकता हूं, अगर मुझे वे मिलते हैं।
dreza
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.