web-dev-qa-db-fra.com

Supprimer l'index php ajoute le code de langue dans l'URL

J'ai construit un site international et il ajoute un code de langue à la fin des URL: www.site.com/index.php/en/ J'ai activé les URL SEF et la réécriture d'URL dans la configuration globale. J'ai essayé de nombreux extraits .htaccess pour supprimer index.php, mais le message me renvoie toujours à la page introuvable. Voici l'extrait utilisé:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/index\.php/
RewriteRule ^index.php/(.*) /$1 [R,L]

S'il vous plaît me conseiller la bonne façon de supprimer index.php et conservez le code de langue.

Mise à jour

.htaccess code:

 <IfModule mod_rewrite.c>                                        
 RewriteEngine On                                                

 #Force www:                                                     
 RewriteEngine on                                                
 RewriteCond %{HTTP_Host} ^ncci-server.com [NC]                  
 RewriteRule ^(.*)$ http://www.ncci-server.com/$1 [L,R=301,NC]   

 #REWRITE RULES                                                  
 #---------------------                                          

 RewriteBase /MainSite/                                          

 #RULE JOOMLA! RULE 1 
RewriteCond %{REQUEST_URI} !^/index\.php                                              
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]  
RewriteCond %{REQUEST_FILENAME} !-f                                                   
RewriteCond %{REQUEST_FILENAME} !-d                                                   
RewriteRule .* index.php [L]                                                          
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]                       

#remove index.php                                                                     
### Redirect index.php to Root                                                        
RewriteCond %{THE_REQUEST} !^POST                                                     
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/                            
RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$                                     
RewriteRule ^index\.php$ http%2://www.ncci-server.com/ [R=301,L]                      

#RULE JOOMLA! RULE 2                                                                  
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]                          
RewriteCond %{QUERY_STRING} (>|%3C)([^s]*s)+cript.*(&lt;|%3E) [OR]                    
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]                        
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})                            
    <Files ^(.*)$>                                                                            
    ErrorDocument 403 "Forbidden"                                                     
    </Files>
# STARTS WITH WEB                                                                                                                                       
    RewriteCond %{HTTP_USER_AGENT} ^web(Zip|emaile|enhancer|fetch|go.?is|auto|bandit|clip|copier|master|reaper|sauger|site.?quester|whack) [NC,OR]      

# ANYWHERE IN UA -- GREEDY REGEX                                                                                                                        
    RewriteCond %{HTTP_USER_AGENT} ^.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures).*$ [NC] 

# ISSUE 403 / SERVE ERRORDOCUMENT                                                                                                                       
    RewriteRule . - [F,L]                                                                                                                               

########## Begin - Rewrite rules to block out some common exploits                                                                                      
## If you experience problems on your site block out the operations listed below                                                                        
## This attempts to block the most common type of exploit `attempts` to Joomla!                                                                         
#                                                                                                                                                       
# Block out any script trying to set a mosConfig value through the URL                                                                                  
    RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]                                                                                  
# Block out any script trying to base64_encode crap to send via URL                                                                                     
    RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]                                                                                              
# Block out any script that includes a <script> tag in URL                                                                                              
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]                                                                                      
# Block out any script trying to set a PHP GLOBALS variable via URL                                                                                     
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]                                                                                      
# Block out any script trying to modify a _REQUEST variable via URL                                                                                     
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})                                                                                              
# Send all blocked request to homepage with 403 Forbidden error!                                                                                        
    RewriteRule ^(.*)$ index.php [F,L]                                                                                                                  
#                                                                                                                                                       
########## End - Rewrite rules to block out some common exploits                                                                                        

########## Begin - Common hacking tools and bandwidth hoggers block                                                                                     
## By SigSiu.net and @nikosdion.                                                                                                                        
# This line also disables Akeeba Remote Control 2.5 and earlier                                                                                         
    SetEnvIf user-agent "Indy Library" stayout=1                                                                                                        
# WARNING: Disabling wget will also block the most common method for                                                                                    
# running CRON jobs. Remove if you have issues with CRON jobs.                                                                                          
    SetEnvIf user-agent "Wget" stayout=1
</IfModule>
2
Ya Basha

J'utilise des hôtes virtuels Apache, donc la bonne façon d'utiliser la réécriture d'URL:

  • Activer Apache Mod_Rewrites (si non activé): Sudo a2enmod rewrite
  • Editez le fichier de configuration du site Apache: Sudo nano /etc/Apache2/sites-available/default

    <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
    </Directory>
    
  • Sudo service Apache2 restart
  • Activer la réécriture d'URL (configuration Joomla)
  • Renommez htaccess.txt en .htaccess

Maintenant Réécriture d'URL fonctionnera.

1
Ya Basha

Activer la réécriture d'URL

Ce que vous devez faire est d’activer la réécriture d’URL. Cela peut être fait dans le backend:

Configuration globale -> Site -> Utiliser la réécriture d'URL (défini sur oui)

ou directement dans le fichier configuration.php de l'instance de Joomla:

public $sef_rewrite = '1'; //1 = enabled, 0 = disabled;

Remarque: lors de l'activation de la réécriture d'URL, un fichier .htaccess doit exister à la racine du site Joomla.

RewriteBase in htaccess:

Si votre site ne se trouve pas dans le dossier racine, vous devrez également annuler la mise en commentaire de la règle RewriteBase dans le fichier .htaccess et ajouter le chemin d'accès au dossier contenant votre site, par exemple:

RewriteBase /myjoomlafolder


Rediriger index.php vers la page d'accueil (htaccess):

Enfin, si vous souhaitez également supprimer le fichier index.php de la page d’accueil, par conséquent, pour supprimer les URL dupliquées de la page d’accueil, procédez comme suit:

### Redirect index.php to Root
RewriteCond %{THE_REQUEST} !^POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$
RewriteRule ^index\.php$ http%2://mysite.com/ [R=301,L]
2
FFrewin

Il ne devrait pas être nécessaire de modifier/ajouter votre .htaccess règles pour supprimer index.php depuis votre URL, cela fonctionne habituellement si vous activez la réécriture d’URL dans la configuration de Joomla et renommez htaccess.txt à .htaccess.

Bien que vous semblez avoir trouvé une solution, je voudrais ajouter une clarification sur l’utilisation de RewriteBase dans le .htaccess fichier:

RewriteBase /JoomlaSubFolder

Cette ligne ne doit pas être commentée ni modifiée si vous avez installé Joomla dans un sous-dossier de votre serveur (dans ce cas, ROOT/JoomlaSubFolder). Cependant, c’est relatif à votre [~ # ~] url [~ # ~] , c’est donc seulement correct si vous accédez à votre site avec http://example.com/JoomlaSubFolder (ou http: // localhost/JoomlaSubFolder ).

Par contre, si vous avez installé Joomla dans le même sous-dossier, mais utilisez une URL unique pour accéder au site (par exemple, http://joomla.example.com , http://example2.com , ou http://www.ncci-server.com/ ), vous devriez le laisser tel quel, par défaut .htaccess fichier:

# RewriteBase /

ou

RewriteBase /

C'est souvent le cas lorsque vous utilisez des domaines addon sur des serveurs Apache, car ceux-ci sont situés dans un sous-dossier du domaine principal, mais un domaine différent est attribué.

2
johanpw