2017-06-07 22 views
7

मैंने बैकएंड के रूप में फ्रंट एंड वर्डप्रेस पर रिएक्ट के साथ एक वेबसाइट बनाई है। खोज इंजन क्रॉलर के लिए मेरी साइट देखने के लिए, मैंने सर्वर की ओर से प्रीरेंडरिंग सेट अप की है, और खोज इंजन से आने वाले प्रॉक्सी अनुरोधों के लिए htaccess सेट अप करने का प्रयास कर रहा हूं ताकि उन्हें पूर्व-प्रस्तुत पृष्ठों परोस दिया जा सके।प्रॉक्सिंग सर्च इंजन क्रॉल अनुरोधों के लिए मैं अपने एचटीएसीएसी को कैसे सही करूं?

परीक्षण के लिए, मैं Google वेबमास्टर्स में "Google के रूप में प्राप्त करें" टूल का उपयोग कर रहा हूं।

यहाँ मेरी प्रयास है:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    <IfModule mod_proxy_http.c> 
    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteCond %{HTTP_USER_AGENT} googlebot [NC,OR] 
    RewriteCond %{QUERY_STRING} _escaped_fragment_ 
    # Proxy the request ... works for inner pages only 
    RewriteRule ^(?!.*?)$ http://example.com:3000/https://example.com/$1 [P,L] 

    </IfModule> 
</IfModule> 
# BEGIN WordPress 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

मेरे समस्या यह है कि इस निर्देश मेरे मुख पृष्ठ के लिए काम नहीं करता है, और केवल आंतरिक पृष्ठों के लिए काम करता है (http://example.com/inner-page/) है:

RewriteRule ^(?!.*?)$ http://example.com:3000/https://example.com/$1 [P,L] 

जब मैं इस पंक्ति को निम्न पंक्ति में बदलें, होम पेज अनुरोध वास्तव में सही ढंग से प्रॉक्सी किया गया है, लेकिन आंतरिक पृष्ठ काम करना बंद कर देते हैं।

RewriteRule ^(index\.php)?(.*) http://example.com:3000/https://example.com/$1 [P,L] 

तुम मुझे पुनर्लेखन नियम ठीक करने में सहायता कर सकते हैं ताकि मेरे मुख पृष्ठ भी googlebot के लिए सही ढंग से प्रॉक्सी है?

उत्तर

1

बदलें RewriteRule रहे हैं:

RewriteRule ^(.*)/?$ http://example.com:3000/https://example.com/$1 [P,L] 
+0

हो जाएगा मैं इस की कोशिश की, और परीक्षण करने के लिए गूगल रूप में लाएं टूल का इस्तेमाल किया। केवल आंतरिक पृष्ठ क्रॉल हो रहे हैं। होम पेज अभी भी मेरे Google वेबमास्टर्स टूल में "नहीं मिला" त्रुटि दिखाता है। – Enthusiast

+0

क्या यह पिछली स्लैश की वजह से हो सकता है जिसे हमेशा Google टूल के रूप में लाया जाता है? – Enthusiast

+0

मैं वैकल्पिक ट्रेलिंग स्लैश के साथ अपना नियम बदलता हूं। आप – Croises

1

पहले repetetions

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    <IfModule mod_proxy_http.c> 
    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteCond %{HTTP_USER_AGENT} googlebot [NC,OR] 
    RewriteCond %{QUERY_STRING} _escaped_fragment_ 
    # Proxy the request ... works for inner pages only 
    RewriteRule ^(?!.*?)$ http://example.com:3000/https://example.com/$1 [P,L] 
    RewriteBase/
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 

    </IfModule> 
</IfModule> 

फिर ^(?!.*?)$^.*$ करने के लिए या [a-zA-Z0-9-.]* की तरह एक अच्छा पैटर्न के साथ बदलने से बचें। 0 या अधिक ध्वज (*) का उपयोग करना न भूलें।

सही कोड

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    <IfModule mod_proxy_http.c> 
    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteCond %{HTTP_USER_AGENT} googlebot [NC,OR] 
    RewriteCond %{QUERY_STRING} _escaped_fragment_ 
    # Proxy the request ... works for inner pages only 
    RewriteRule ^(.*)$ http://example.com:3000/https://example.com/$1 [P,L] 
    RewriteBase/
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 

    </IfModule> 
</IfModule> 
संबंधित मुद्दे