遵循谷歌的建议,redirección 301
它在其文章中指出,页面可能会在末尾带有斜杠/斜杠,(/)
也可能不带斜杠。例如:
http://www.example.com/pagina
http://www.example.com/pagina/
如果是这样,在这种情况下,这是一种重复,只能通过将一个版本重定向到另一个版本来解决。
现在我的问题?
- 如何将没有斜杠/斜杠的所有页面重定向到带有斜杠/斜杠的版本?
我尝试将此代码调整为我的文件.htaccess
,但调整它时出现问题。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) http://www.example.com/$1/ [R=301,L,QSA]
重要提示:在我的文件中
.htaccess
,Urls双向工作都没有问题,无论是在末尾有斜线/斜线(/)
还是没有斜线。
我的.htaccess文件
# Activamos mod_rewrite
RewriteEngine on
# Seleccionamos el directorio base para el RewriteRule
RewriteBase /project/
# Aquí nos evitamos comprobar que sea un archivo (agrego comprobación
# para detectar también directorio) en cada conjunto de reglas
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ $1 [QSA,L]
# Obtenemos todo lo que vaya tras "assets/" y subdirectorios previstos
RewriteCond %{REQUEST_URI} assets/(css|fonts|js|img)/(.+)$
# Entonces (si se cumplen todas las condiciones) redirigimos (R)
# y dejamos de evaluar el resto de reglas (L)
RewriteRule ^(.*)$ assets/%1/%2 [L,R]
# Tu/s regla/s
RewriteRule ^online-video-en-hd-gratis/?$ video.php [L,NC,QSA]
RewriteRule ^online/video/hd/free/?$ online.php [L,NC,QSA]
另一方面,我不知道是否允许输入特定的URL示例是否正确:
example.com/online.php
或重定向到个性化URLexample.com/online/video/hd/free/
正则表达式
^(.*[^/]$)
匹配最后一个字符不是 a 的任何 URL/
。同时,它捕获$1
.为此,我们在之前添加了一个条件,以检查具有该名称的文件是否不存在。因此,我们保证仅在您不尝试访问文件(文件,而不是文件夹)时才添加尾部斜杠:
在您的特定情况下,我认为我们应该反过来:如果文件存在,则不再检查规则;如果它不存在,则继续其余的。他
.htaccess
看起来像这样:测试:
我把它上传到了一个免费的主机上,你可以在那里尝试地址:
http://mariano.freevar.com/43005/proof/
直接访问资源
http://mariano.freevar.com/43005/tests
它得到一个 301 并
/
在它访问的末尾重定向到 URL试试这个规则: