Cuando creas un sitio de staging predeterminado ubicado en una subcarpeta, WP STAGING establece la opción «Permalinks» del sitio de staging en «Simple» y desactiva la opción «Permalinks con nombre de entrada». Esto garantiza que el sitio de staging se abra correctamente en todo tipo de servidores.
Contents
La versión Pro de WP STAGING tiene la opción «Mantener permalinks«. Cada vez que creas un nuevo sitio de staging y activas esta opción, el sitio de staging usará exactamente la misma estructura de permalinks que el sitio en vivo. Encontrarás esta opción en WP STAGING > Ajustes > Mantener Permalinks.
¡Si activas esta opción y el sitio de staging te redirige al sitio en vivo o muestra un error 404, sigue este artículo!
Generalmente, está bien usar permalinks simples en un sitio de staging. A menudo, no hay necesidad técnica de activar permalinks personalizados para beneficiarse de un sitio de staging.
Sin embargo, si quieres activar permalinks personalizados en tu sitio de staging para tener la misma estructura de enlaces, primero deberás determinar qué servidor web se está ejecutando en tu servidor o plan de Hosting.
Necesitas acceder al panel de administración de tu sitio de staging WordPress para activar los permalinks con nombre de entrada.
Si intentas acceder al panel de administración de tu sitio de staging y el sitio de staging te redirige al sitio en vivo, añade el slug wp-admin al final de la URL, como https://example.com/stagingsite/wp-admin
Esto te permite acceder al wp-admin de tu sitio web.
(Esta redirección puede ocurrir si usas plugins de idioma como WPML o Polylang, que añaden un slug de idioma a la URL. Estos plugins suelen necesitar los permalinks activados)
Servidor web Apache
Si el servidor web Apache sirve tu sitio web, es probable que los permalinks amigables para buscadores funcionen sin ningún trabajo adicional.
Simplemente activa los permalinks en la página:
Sitio de staging > wp-admin > Ajustes > Permalinks
Es muy probable que funcione bien desde el principio.
Si esto no da el resultado esperado y los enlaces en el sitio de staging lanzan un error 400, crea un nuevo archivo .htaccess y pégalo en la raíz del sitio de staging usando un cliente FTP o un plugin de gestor de archivos.
El contenido de ese archivo debería verse así:
# BEGIN WordPress
RewriteEngine On
RewriteBase /staging/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /staging/index.php [L]
# END WordPress¡Reemplaza el texto resaltado staging con el nombre de la subcarpeta donde se encuentra el sitio de staging!
Servidor web Apache | Multisitios
Normalmente, WP STAGING se encarga de hacer los ajustes necesarios en el .htaccess si clonas un multisitio de WordPress.
Las siguientes reglas se colocarán en un archivo .htaccess en la raíz del sitio de staging para multisitio en un subdominio y una subcarpeta:
Multisitio en subdominio, p. ej., staging.example.com
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]Multisitio en subcarpeta, p. ej., example.com/staging
RewriteEngine On
RewriteBase /staging/
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]¡Reemplaza el texto resaltado staging con el nombre de la subcarpeta donde se encuentra el sitio de staging!
Servidor web Nginx
Si tu sitio web usa Nginx, intenta activar primero los permalinks amigables para buscadores en el sitio de staging. Si eso no funciona, sigue los pasos a continuación para activar los permalinks en Nginx.
Abre wp-admin y ve a Ajustes > Permalinks, luego selecciona Nombre de la entrada.
To test, open your site’s front page and click any link.
If the page opens as expected, you are done. If it returns a 404 error, use the advanced steps below:
Crea un nuevo bloque de servidor en nginx.conf similar al siguiente fragmento:
location /staging{
try_files $uri $uri/ /staging/index.php?$args;
}¡Reemplaza el texto resaltado staging con el nombre de la subcarpeta donde se encuentra el sitio de staging!
Also, change the path to the PHP socket file if it is different in your system. That should give you only an idea of what to change. Do not use these values word by word without checking if your NGINX configuration is different.
Be aware that you need full access to your server to follow the steps above. If you have no clue what these lines do, it might be best to ask someone to assist you with the modifications or keep the permalinks disabled.
Después de esto, el servidor Nginx debe reiniciarse y podrás disfrutar de tu sitio de staging con permalinks personalizados activados.
Esto siempre requerirá configurar un bloque Nginx específico con el nombre de la carpeta del sitio de staging.
Otro enfoque opcional es crear un bloque de servidor y dejar que Nginx realice una reescritura automática cada vez que WordPress se cargue desde una subcarpeta:
# Matches /<folder>/... – except for WP core folders
location ~ ^/(?!wp-admin|wp-content|wp-includes)([a-zA-Z0-9_-]+)(?:/|$) {
set $first_seg $1;
# First try static files/folders …
try_files $uri $uri/ @maybe_staging;
}
# Checks whether /<folder>/index.php exists; if so, rewrite there,
# otherwise fall back to the live front controller.
location @maybe_staging {
if (-f $document_root/$first_seg/index.php) {
rewrite ^ /$first_seg/index.php?$args last;
}
rewrite ^ /index.php?$args last;
}Servidor web NGINX Multisitios
Los multisitios de WordPress necesitan una configuración ligeramente diferente.
A continuación encontrarás un ejemplo de nginx.conf para multisitio de staging en una subcarpeta.
Hemos resaltado las partes relevantes. Después de añadir esta configuración a tu nginx.conf, debes reiniciar el servidor NGINX.
Si tu servidor usa NGINX y no sabes dónde añadir esta configuración, consulta a tu proveedor de Hosting.
Sitio de staging en subcarpeta, p. ej., example.com/staging
server {
listen 80; listen [::]:80;
server_name example.com/staging;
root /var/www/multi; # This is the path to your multisite website
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$request_uri/ permanent;
rewrite ^/staging(/[^/]+)?(/wp-.*) /staging$2 last;
rewrite ^/staging(/[^/]+)?(/.*\.php)$ /staging$2 last;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location /staging/ {
try_files $uri $uri/ /staging/index.php?$args ;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php7-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}¡Reemplaza el texto resaltado staging con el nombre de la subcarpeta donde se encuentra el sitio de staging!
Sitio de staging en subdominio, p. ej., staging.example.com
Si tu sitio de staging está en un subdominio, puedes usar la misma configuración anterior pero con una pequeña modificación:
server {
listen 80; listen [::]:80;
server_name staging.example.com;
# Below should be the path to your staging site
root /var/www/multi/staging;
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$request_uri/ permanent;
rewrite ^/(/[^/]+)?(/wp-.*) /$2 last;
rewrite ^/(/[^/]+)?(/.*\.php)$ /$2 last;
}
location / {
try_files $uri $uri/ /staging/index.php?$args ;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php7-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}Reemplaza el texto resaltado staging con el nombre de la subcarpeta donde se encuentra el sitio de staging.
Bitnami (Apache)
Debes seguir pasos adicionales si usas WordPress en una instancia de Bitnami.
Los permalinks con nombre de entrada no son compatibles de forma predeterminada en las instancias de WordPress Bitnami porque Bitnami no usa .htaccess en la carpeta raíz del sitio web. Ignora cualquier archivo .htaccess en ese lugar.
Bitnami no usa el archivo .htaccess predeterminado en la raíz de tu sitio web; en su lugar, todas las configuraciones de htaccess se añaden a un archivo llamado: /opt/bitnami/apps/APPNAME/conf/htaccess.conf.
Por lo tanto, si quieres que los permalinks funcionen, tendrás que modificar el archivo htaccess.conf
Ve a ese archivo y añade lo siguiente:
<Directory /opt/bitnami/apps/wordpress/htdocs/STAGING>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /STAGING/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /STAGING/index.php [L]
</IfModule>
</Directory>Otra opción sería mantener los permalinks en la configuración simple y, en ese caso, no necesitas cambiar el htaccess.conf en absoluto.
Microsoft Azure
Azure usa el servidor Microsoft IIS y requiere un archivo web.config personalizado en la raíz del directorio web del sitio de staging.
Primero, debes ver el archivo web.config en el sitio «en vivo» y tomar nota del nombre de la regla de esta línea:
<rule name="WordPress: http://wordpress-arc.azurewebsites.net" patternSyntax="Wildcard">Es WordPress: http://wordpress-arc.azurewebsites.net en este ejemplo.
Luego crea un nuevo archivo web.config en el directorio del sitio «staging» con lo siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<remove name="WordPress: http://wordpress-arc.azurewebsites.net"/>
<rule name="staging" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="index.php"/>
</rule></rules>
</rewrite>
</system.webServer>
</configuration>Asegúrate de que esta línea:
<remove name="WordPress: http://wordpress-arc.azurewebsites.net"/>has the same rule name as defined in the live site’s web.config file, which was WordPress: http://wordpress-arc.azurewebsites.net in our example.
Microsoft IIS
- First, open the
web.configfile at the root directory of the live site to take note of this line:
<rule name=»WordPress: https://example.com/» patternSyntax=»Wildcard»>
Especially the name of the rule:WordPress: https://example.com/ - Luego crea un nuevo archivo
web.configen el directorio del sitio de staging con este fragmento de código:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<remove name="WordPress: https://example.com/" />
<rule name="WordPress: https://example.com/staging" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="index.php"/>
</rule></rules>
</rewrite>
</system.webServer>
</configuration>Make sure that the line of <remove name="WordPress: https://example.com/" /> has the same «name» as the one you have in the web.config on the live site.
Y asegúrate de que esta línea <rule name="WordPress: https://example.com/staging" patternSyntax="Wildcard"> tenga el nombre de directorio correcto del sitio de staging.
