2017-10-05 2 views
0

Je maintiens un site Web que quelqu'un d'autre a écrit. Il a utilisé le chemin absolu dans le fichier html pour demander des fichiers de ressources, et il a supposé que le projet était toujours installé à la racine du domaine.Comment utiliser apache pour rediriger des fichiers vers un autre répertoire?

Maintenant, je teste le site Web; J'ai installé le projet dans un sous-répertoire. Et je veux rediriger les fichiers qui commencent par certains caractères vers un sous-dossier.

Par exemple, il a écrit quelque chose comme ça

<img src="/en/wp-content/themes/....."> 

Alors maintenant, le serveur va commencer la recherche de fichiers à la racine comme example.com/en/wp-content/....

J'ai installé le projet à /foo/en, example.com/foo/en. Je veux utiliser .htaccess pour réacheminer les URL commençant par /en/wp-content/themes à /foo/en/wp-content/themes. Que devrais-je faire?

Voici comment je l'ai écrit:

RewriteEngine On 

RewriteRule ^en/wp-content/themes/(.*)$ /foo/en/wp-content/themes/$1 

Mais cela ne fonctionne pas ....

+0

La mod-réécriture est-elle activée et autorisez-vous à utiliser le contournement htaccess? – Webdesigner

+0

Oui, quand j'ai vissé quelque chose, le site web a cessé de fonctionner (impossible d'y accéder). –

+0

Version du serveur: Apache/2.4.7 (Ubuntu). Ils sont le seul contenu dans mon .htaccess –

Répondre

0

Je change la ligne seulement un peu juste pour être sûr que ce ne gêne pas avec tout autre fichier htaccess utiliser [L] ou [FIN]:

RewriteEngine On 
RewriteRule ^/?en/wp-content/themes/(.*)$ /foo/en/wp-content/themes/$1 [L] 

[L] dernier moyen https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_l

[END] https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_end

+0

Je me demande, si l'URL est example.com/en/..., le .htaccess dans la racine prend-il le dessus? ou foo/fr? Si je veux réécrire l'url comme ceci, devrais-je créer .htaccess dans la racine ou/foo/en? –