web-dev-qa-db-fra.com

Comment ajouter du code .htaccess via une fonction?

J'ai besoin d'ajouter le code .htaccess suivant via une fonction

    <IfModule mod_deflate.c>
# Insert filters
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml

# Drop problematic browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>

## Expires Caching ##

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 2 week"
ExpiresByType image/jpeg "access 2 week"
ExpiresByType image/gif "access 2 week"
ExpiresByType image/png "access 2 week"
ExpiresByType text/css "access 2 week"
ExpiresByType application/pdf "access 2 week"
ExpiresByType text/x-javascript "access 2 week"
ExpiresByType application/x-shockwave-flash "access 2 week"
ExpiresByType image/x-icon "access 2 week"
ExpiresDefault "access 2 week"
</IfModule>

## Expires Caching ## 

Dans mes thèmes, function.php

function add_htaccess
{
//the above code to add
}

Je ne veux tout simplement pas l'ajouter manuellement.

2
Ezhil
/**
 * Inserts an array of strings into a file (.htaccess ), placing it between
 * BEGIN and END markers. Replaces existing marked info. Retains surrounding
 * data. Creates file if none exists.
 *
 * @param array|string $insertion
 * @return bool True on write success, false on failure.
 */
function add_htaccess($insertion)
{
    $htaccess_file = ABSPATH.'.htaccess';
    return insert_with_markers($htaccess_file, 'MyMarker', (array) $insertion);
}

Remarques:

  • $insertion est un tableau de chaînes. Chaque chaîne obtient une nouvelle ligne dans le fichier.
  • Bien entendu, vous devez remplacer "MyMarker" par votre propre nom. Votre contenu sera inséré dans ce conteneur spécifié, laissant le reste du fichier seul.
  • Cette fonction repose sur la fonction insert_with_markers() qui n'est chargée que dans la zone d'administration. Sinon, vous devrez charger wp-admin/includes/misc.php manuellement.
  • Le .htaccess doit être accessible en écriture pour que cette fonction puisse fonctionner.
3
Geert

Juste un petit conseil - vous devriez avoir une idée de base en regardant comment cela se passe dans le noyau de WordPress:

La source de save_mod_rewrite_rules () et insert_with_markers () les fonctions pourraient être intéressantes pour vous.

Vous verrez que les règles sont écrites dans le fichier avec PHP fwrite () .
Le code qui vérifie si le fichier .htaccess lui-même est présent, inscriptible, etc. sera également utile.

Obtenez insipired.

PS: Il peut y avoir des filtres pour rendre le travail plus facile, mais apprendre les méthodes utilisées est quand même une bonne idée,)

2
Michal Mau
0
Sisir