我需要使用它的查询字符串将一个文件夹重定向到一个文件。 我将 .htaccess 保存在:/subdir
我使用自动读取 .htaccess 文件的 OpenSpeedLite 17.16, 我尝试了几个链接(如下),但到目前为止没有任何效果。 我总是得到original-url.
请帮忙-谢谢
原始网址: www.example.com/tmp32108/subdir/?task=userFiles&pid=1&lang=en
新网址: www.example.com/tmp32108/subdir/myfile.php?task=userFiles&pid=1&lang=en
.htaccess:
RewriteEngine On
RewriteBase /subdir/
#RewriteCond %{REQUEST_FILENAME} !-d // I tried these too
#RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} lang=([0-9a-zA-Z_]*)
RewriteCond %{QUERY_STRING} pid=([0-9a-zA-Z_]*)
RewriteCond %{QUERY_STRING} proc=([0-9a-zA-Z_]*)
RewriteCond %{QUERY_STRING} etime=([0-9a-zA-Z_]*)
RewriteCond %{QUERY_STRING} task=([0-9a-zA-Z_]*)
试过这个:
RewriteRule ^(/subdir/)?$ https://www.example.com/tmp32108/subdir/myfile.php?lang=$1&pid=$2&proc=$3&etime=$4&task=$5 [L,QSA]
还有这个:
RewriteRule .+myfile.php?lang=$1&pid=$2&proc=$3&etime=$4&task=$5 [L,QSA]
帖子:
https://serverfault.com/questions/824949/htaccess-301-redirect-from-directory-to-file
您可以尝试使用以下 .htaccess 代码将您的文件夹重定向到一个包含其查询字符串的文件:
RewriteEngine On
RewriteBase /tmp32108/subdir/
RewriteCond %{QUERY_STRING} lang=([0-9a-zA-Z_]*)
RewriteCond %{QUERY_STRING} pid=([0-9a-zA-Z_]*)
RewriteCond %{QUERY_STRING} task=userFiles
RewriteRule ^(.*)$ /tmp32108/subdir/myfile.php?lang=%1&pid=%2&%{QUERY_STRING} [L,R=301]
在上面的代码中,RewriteRule 匹配任何以 /tmp32108/subdir/ 开头的 URL,并且具有带有指定参数的查询字符串。然后它将 URL 重定向到 /tmp32108/subdir/myfile.php,并将匹配的参数附加到 URL。
RewriteRule 末尾的“R=301”标志表示重定向应该是永久(301)重定向。这对于 SEO 很重要,因为搜索引擎将更新其索引以反映新的 URL。
确保将此代码放在位于 /tmp32108/subdir/ 目录中的 .htaccess 文件中。此外,在测试重定向之前清除浏览器缓存,以确保您没有看到原始 URL 的缓存版本。