¿Cómo eliminar "admin.php? page=" de wp-admin usando .htaccess?

4

Estoy buscando usar .htaccess para volver a escribir las URL de las páginas de administración. Me gustaría cambiarlo de:

http://example.com/wp-admin/admin.php?page=whatever&id=5&var=10

a

http://example.com/wp-admin/whatever?id=5&var=10

Ahora mismo tengo:

RewriteEngine On

RewriteRule ^members$ admin.php?page=members& [L,E=CLEAN_CONTACT_URL:1,QSA]
RewriteRule ^add-members$ admin.php?page=add-members [L,E=CLEAN_CONTACT_URL:1,QSA]
RewriteRule ^delete$ admin.php?page=delete& [L,E=CLEAN_CONTACT_URL:1,QSA]

RewriteCond %{QUERY_STRING} ^page=(.*)$
RewriteCond %{ENV:REDIRECT_CLEAN_CONTACT_URL} !1
RewriteRule ^admin.php$ /wp-admin/%1?%2 [R,L]

Que lo cambia a:

http://example.com/wp-admin/whatever&id=5&var=10

No me importa agregar cada 'sección' (por ejemplo, miembros / add-member / delete) a mi .htaccess . Aunque, si hay una mejor manera, me encantaría verla.

Estoy usando redirecciones internas y externas, de modo que cuando hace clic en una URL de administración y va a wp-admin/admin.php?page=somewhere , vuelve a escribir la URL para el navegador y luego encuentra la URL reescrita. Me gustaría usar enlaces de administrador 'bonitos'. Ejemplo:

http://example.com/wp-admin/members

Es fácil de recordar e intuitivo. Eventualmente, también cambiaré el nombre de /wp-admin a /user .

    
pregunta Jeff 15.12.2014 - 07:02

2 respuestas

0

Puedes intentar esto (lo siento, no probado previamente). Ver comentarios en línea para explicación:

RewriteEngine On

## if any string separated by | is matched, it will append to ?page=
RewriteRule ^(members|add-members|delete)$ admin.php?page=%1 [L,E=CLEAN_CONTACT_URL:1,QSA]

## If querystring starts with page= and is followed by any string separated by |
## put that in the first group. Then put any other characters in second group
RewriteCond %{QUERY_STRING} ^page=(members|add-members|delete)(.*)$
RewriteCond %{ENV:REDIRECT_CLEAN_CONTACT_URL} !1
RewriteRule ^admin.php$ /wp-admin/%1?%2 [R,L]

Probablemente puedas reescribir la regla para que sea más genérica. El principal problema que tiene con:

RewriteCond %{QUERY_STRING} ^page=(.*)$

es que (.*)$ coincide con TODOS los caracteres, incluido el siguiente &foo=bar , por lo que toda la cadena de consulta se acumula en %1 y su %2 está vacío.

    
respondido por el awei 06.02.2015 - 02:56
-1

No estoy realmente seguro de cómo quieres que se vea tu meta final, pero entiendo, aquí está mi enfoque. En su .htaccess agregue la siguiente regla entre la etiqueta <IfModule mod_rewrite.c> :

RewriteCond %{QUERY_STRING} (^|&)page=(.*)
RewriteRule ^wp-admin/admin.php(.*)$  wp-admin [R=301,L]]

Basado en el .htaccess predeterminado generado por WordPress, ahora debería tener el aspecto siguiente con su RewriteRule personalizado:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Custom Rules
RewriteCond %{QUERY_STRING} (^|&)page=(.*)
RewriteRule ^wp-admin/admin.php(.*)$  wp-admin [R=301,L]
</IfModule>

Esto redireccionará páginas como:

http://example.com/wp-admin/admin.php?page=whatever&id=5&var=10

a

http://example.com/wp-admin?page=whatever&id=5&var=10

Si pudiera aclarar su pregunta específicamente sobre qué desea que se basen sus resultados esperados en algunas URL de ejemplo, le podría dar una respuesta más concreta.

    
respondido por el Ethan Jinks O'Sullivan 19.09.2016 - 02:51

Lea otras preguntas en las etiquetas