3 votos

Cómo mapa de ruta de acceso path.html en Apache?

Mi antiguo sitio fue dinámica, de manera que todos los permalinks fueron de esta forma:
http://wangling.me/2000/01/file o `http://wangling.me/2000/01/file/

Ahora me acaba de reconstruir mi sitio con archivos html estáticos para permalinks ser:
http://wangling.me/2000/01/file.html

Así que quiero mapa antiguo permalinks nuevo permalinks. Escribí esto en /etc/apache2/sites-enabled/wangling.me:

<VirtualHost *:80>
     ServerAdmin xxx
     ServerName wangling.me
     ServerAlias *.wangling.me
     DocumentRoot doc_root
     RewriteEngine On
     RewriteCond /$1 !-d
     RewriteCond /$1 !-f
     RewriteCond /$1.html -f
     RewriteRule ^/([^.]+?)/*$ /$1.html
</VirtualHost>

Pero no funciona. Aquí los logs:

[Sáb Ene 19 00:49:01 2013] [error] [cliente 24.12.163.253] Archivo no existen: doc_root/2012/05/xyz

Así que parece que el RewriteRule no se utiliza. Sé que debe haber algo mal con mi configuración, porque soy de los que aun no estoy seguro exactamente Pattern en RewriteRule Pattern Substitution. Es la dirección URL absoluta(http://wangling.me/2012/05/xyz), dirección URL relativa(2012/05/xyz), ruta absoluta de archivo(doc_root/2012/05/xyz), o relativa de la ruta de acceso del archivo(2012/05/xyz)?

0voto

an0 Puntos 116

Por prueba-y-error, me encontré con que Pattern es relativo URL (/2012/05/ xyz) en RewriteRule Pattern Substitution. Para la correcta configurar es:

<VirtualHost *:80>
     ServerAdmin xxx
     ServerName wangling.me
     ServerAlias *.wangling.me
     DocumentRoot doc_root
     RewriteEngine On
     RewriteCond %{DOCUMENT_ROOT}/$1 !-d
     RewriteCond %{DOCUMENT_ROOT}/$1 !-f
     RewriteCond %{DOCUMENT_ROOT}/$1.html -f
     RewriteRule ^/([^.]+?)/*$ /$1.html
</VirtualHost>

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: