我一直在检查,但似乎找不到确切的语法来实现我正在尝试的内容。
我目前正在更新一个网站,但由于它在 Google 中的位置非常好,我想保留所有链接,但这次我想使用漂亮的 url。所以,我遇到的问题如下:
我有这个 bases-generales (general-rules) 部分,我用它来重写:
RewriteRule ^bases-generales/ bases.php?locale=es_LA
我遇到的问题是当前(旧)文件名为 bases.php,因此我希望用户在直接从 Google 或其他链接打开 bases.php 时被重定向到 /bases-generales/。
我现在使用的规则是:
RewriteRule /bases.php http://mysite/bases-generales/ [R=301,L]
现在,这个命令会重定向,但唯一的问题是 url 看起来像这样:
http://mysite/bases-generales/?locale=es_LA
另一个问题是它会导致重定向循环。
有关更多信息,这是完整的 htaccess(mysite 当然是假的)
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
order deny,allow
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(mysite)(:80)? [NC]
RewriteRule ^(.*) http://mysite/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://mysite/$1/ [L,R=301]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteBase /
RewriteRule ^/ index.php?locale=es_LA
RewriteRule ^bases-generales/ bases.php?locale=es_LA
RewriteRule ^condiciones/ condiciones.php?locale=es_LA
RewriteRule ^programa/ programa.php?locale=es_LA
RewriteRule ^premios/ premios.php?locale=es_LA
RewriteRule ^ganadores/ ganadores.php?locale=es_LA
RewriteRule ^patrocinadores/ patrocinadores.php?locale=es_LA
RewriteRule ^galeria/ galeria.php?locale=es_LA
RewriteRule ^contacto/ contacto.php?locale=es_LA
RewriteRule ^bases.php http://mysite/bases-generales/ [R=301,L]