J'ai créé un sous-domaine de mon site (pour les besoins de cette question, je l'appellerai wiki.example.com
), installé un wiki à cet endroit et configuré la réécriture d'URL conformément à l'article sur le site Web de MediaWiki ( http://www.mediawiki.org/wiki/Manual:Short_URL/Apache ).
Mais comme mon sous-domaine est purement dédié au wiki, j'espérais pouvoir avoir mes URL au format wiki.example.com/ArticleName
plutôt que wiki.example.com/wiki/ArticleName
.
J'ai essayé ceci en modifiant la règle de réécriture d'une manière qui me semblait correcte:
RewriteRule ^(/.*)$ %{DOCUMENT_ROOT}/index.php [L]
Déni de responsabilité: ce n'était peut-être pas exactement comme cela, car la syntaxe que j'avais écrite n'est plus disponible pour que je puisse retaper cette question.
Cela fonctionnait partiellement, car je pouvais accéder à la page wiki.example.com/Main_Page
, mais aucune des images ou CSS ne s’était chargée.
Je soupçonne que la règle de réécriture d'URL essayait de tout diriger vers index.php
, mais je me demande s'il existe un moyen d'obtenir une URL au format wiki.mysite.com/ArticleName
?
La façon dont je cache ce type de problème consiste à utiliser . Htaccess, et cela fonctionne réellement très bien.
Le code provient de mon hébergeur, et vous devez faire quelques modifications pour le réparer, mais cela devrait fonctionne également pour vous.
# .htaccess main domain to subdirectory redirect
# Do not change this line.
RewriteEngine on
# Change example.com to be your main domain.
RewriteCond %{HTTP_Host} ^(www.)?example.com$
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteCond %{REQUEST_URI} !^/subdirectory/
# Don't change the following two lines.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteRule ^(.*)$ /subdirectory/$1
# Change example.com to be your main domain again.
# Change 'subdirectory' to be the directory you will use for your main domain
# followed by / then the main file for your site, index.php, index.html, etc.
RewriteCond %{HTTP_Host} ^(www.)?example.com$
RewriteRule ^(/)?$ subdirectory/index.html [L]
Fondamentalement, le dossier /wiki/
sera supprimé de l'URL et il devrait résoudre votre problème.