2017-10-09 10 views
1

j'ai un RewriteCond pour définir le répertoire de travail courant dans une variable d'environnement comme ci-dessous:RewriteCond correspond avidement

RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*?/)\1$ 
RewriteRule ^(.*)$ - [E=CWD:%2] 

Au-dessus de ces deux règles, j'ai une règle distincte pour la réécriture.

RewriteRule ^(?!ui?)([a-zA-Z]{2})/(.*)$ $2?language=$1 [NC,QSA] 

Dans l'ensemble, ma section .htaccess ressemble à quelque chose comme:

RewriteRule ^(?!ui?)([a-zA-Z]{2})/(.*)$ $2?language=$1 [NC,QSA] 

RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*?/)\1$ 
RewriteRule ^(.*)$ - [E=CWD:%2] 

Pour le REQUEST_URI:

/es/website-design/do-it-yourself-website-builder.php 

CWD est défini avec la valeur '/ es /'

mais pour le REQUEST_URI:

/de/website-design/do-it-yourself-website-builder.php 

CWD est défini avec la valeur '/ de/site-conception /'

Idéalement CWD devrait enregistrer le nom du dossier de base ('/ es /' et '/ de /' respectivement) dans les cas susmentionnés.

Qu'est-ce qui ne va pas ici? Je suis coincé là-dessus depuis assez longtemps maintenant.

Aidez-nous s'il vous plaît.

Le contenu de mon fichier .htaccess:

RewriteEngine On 
RewriteBase/

RewriteCond $2 !^(index\.php) 
RewriteRule ^(shop)/(.*)$ $2 [NC,QSA] 

RewriteCond %{THE_REQUEST} ^.*/(shop)/index\.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,QSA,L] 

RewriteRule ^(?!ui?)([a-zA-Z]{2})/(.*)$ $2?language=$1 [NC,QSA] 

# following tweak done for running supersite from within a folder 
# for ever request url , this rule will match out the base folder 
# name and capture it in the regex rule given in RewriteCond 
RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*?/)\1$ 
RewriteRule ^(.*)$ - [E=CWD:%2] 

# Preventing Hot Linking of images 
#RewriteCond %{REQUEST_URI} ^\/getImage\.php [NC] 
#RewriteCond %{HTTP_REFERER} !^.*(manage.bigrock.in|manage.bigrock.com).*$ [NC] 
#RewriteCond %{REQUEST_URI} .*\.css$ [NC,OR] 
#RewriteCond %{REQUEST_URI} .*\.js$ [NC,OR] 
#RewriteCond %{QUERY_STRING} !^src\=favicon\.ico$ [NC] 
#RewriteCond %{HTTP_REFERER} ^http://([^/]+) [OR] 
#RewriteCond %{HTTP_REFERER} ^$ 
#RewriteCond %{HTTP_HOST}<>%1 !^(.+)<>\1$ [NC] 
#RewriteRule ^(.*)$ /noimage.html [Last] 

RewriteCond %{HTTP_USER_AGENT} ^GlobalSign-Approver 
RewriteRule ^(.*)$ cloudflare.html [L] 

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^/onlinepayment/(.*)$ https://%{HTTP_HOST}/onlinepayment/$1 [NC,QSA] 

RewriteCond %{REQUEST_METHOD} !POST 
RewriteRule ^index\.php$/[R=301,QSA,L] 

RewriteCond %{REQUEST_FILENAME} (S|s)itemap.xml 
RewriteRule ^(.*)$ /seo-files.php?type=sitemap [L] 

RewriteCond %{REQUEST_FILENAME} ror.xml 
RewriteRule ^(.*)$ /seo-files.php?type=ror [L] 

RewriteCond %{REQUEST_FILENAME} urllist.txt 
RewriteRule ^(.*)$ /seo-files.php?type=urllist [L] 

# Robots.txt redirection to robots.php 
RewriteRule ^robots.txt robots.php [L,NC] 

# URL rewriting 
RewriteRule ^domain-registration-pricing$ /domain-registration/domain-registration-price.php [R=302,L,NC,QSA] 
RewriteRule ^domain-registration/transfer/index.php /domain.php?action=domain_transfer&bypass_url_mapper=false [L,NC,QSA] 

RewriteCond %{QUERY_STRING} ^idn 
RewriteRule .*domain-registration/index.php /domain-registration/idn? [R=301,L] 

RewriteRule ^promos.php /content.php?action=promos [L,NC,QSA] 

RewriteRule ^website-design/index.php /sitebuilder.php?type=sblite&bypass_url_mapper=false [L,NC,QSA] 
#RewriteRule ^website-design/do-it-yourself-website-builder.php %{ENV:CWD}website-design/index.php? [R=301,L,NC] 
RewriteRule ^website-design/web-design-service.php /website-design/index.php [R=301,L,NC,QSA] 
RewriteRule ^website-design/(.*).js$ /$1.js [L,NC,QSA] 

RewriteRule ^website-builder.php$ /website-design/index.php [R=301,L,NC,QSA] 
RewriteRule ^do-it-yourself.php$ /website-design/index.php [R=301,L,NC,QSA] 
RewriteRule ^build-it-for-me.php$ /website-design/index.php [R=301,L,NC,QSA] 

RewriteRule ^combo-offers /product-bundle.php [L,NC,QSA] 

RewriteRule ^express-cart[/]{0,1}([a-zA-Z0-9_]*)[/]{0,1}$ /quickbuy.php?action=$1 [L,NC,QSA] 
RewriteRule ^express-cart[/]{0,1}([a-zA-Z0-9_]*)[/]{1}([a-zA-Z0-9_]*)[/]{0,1}$ /quickbuy.php?action=$1_$2 [L,NC,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /urlmapper.php [L,QSA] 
+0

CWD doit renvoyer les noms de dossier de base ('/ es /' et '/ de /') respectivement. – debaShish

+0

dans mon dossier racine, en dehors des dossiers «es» et «de» – debaShish

+0

C'est le problème alors. La règle que vous avez montrée est de comprendre notre chemin 'RewriteBase'. Ce qui signifie chemin relatif de la racine du site. Si .htaccess lui-même est dans la racine du site, alors 'RewriteBase' est juste'/' – anubhava

Répondre

0

Assurez-vous que chaque règle a L drapeau par exemple

RewriteRule ^(?!ui?)([a-zA-Z]{2})/(.*)$ $2?language=$1 [NC,QSA] 

devrait être

RewriteRule ^(?!ui?)([a-zA-Z]{2})/(.*)$ $2?language=$1 [NC,L,QSA] 

puis complètement effacer votre cache du navigateur.

La variable d'envoi CWD doit toujours apparaître comme / car htaccess est placé directement dans le répertoire racine du site.