php - 带有参数的 URL 的 htaccess 301 重定向

标签 php apache .htaccess mod-rewrite redirect

我的 htaccess 文件中有以下内容,它采用如下 URL:www.example.com/Page.php?id=About 并将其转换为 www.example.com/about。唯一的问题是,当我在 htaccess 中设置重定向 301 时,旧的 URL 没有重定向到新的 URL(我的理解是因为你不应该在基本重定向 301 中传递参数 - 我的基本重定向示例我在下面尝试过)。

Redirect 301 /Page.php?id=About http://www.example.com/about

要注意的是,新 URL 不一定只是删除当前 ID 并将其替换为小写版本。例如,我还想:

Redirect 301 /Page.php?id=Example http://www.example.com/example-page

我想保留重写 URL 的当前功能,但也希望对旧 URL 的任何访问都重定向到新 URL(即更新 Google 索引)。目前访问 www.example.com/Page.php?id=About 仍然有效,但显示的页面没有内容。

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9\-]+)/?$ Page.php?id=$1
RewriteRule ^([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/?$ Page.php?id=$1&tab=$2
RewriteRule ^([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/?$ Page.php?id=$1&tab=$2&tabid=$3

最佳答案

如果您将此规则添加到您的 .htaccess,它应该完成重定向的工作。它将添加 ?id=About 到/about 的重定向。如果您在 2.4.0 或更高版本上运行,则可以添加 QSD 标志以丢弃重定向中的查询字符串。

RewriteCond %{QUERY_STRING} ^id=About$
RewriteRule ^page.php /about [NC,R,L]

关于php - 带有参数的 URL 的 htaccess 301 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20658268/

相关文章:

php - 修复将数据库导入 Wampserver 的 1064 SQL 错误

javascript - 使用Jquery/ajax&php向数据库插入数据

apache - 使用 .htaccess 从浏览器缓存中排除目录

apache - 使用重写规则通过 htaccess 传递变量

php - Ausart 主题选项。我已经安装了一个主题,但我现在有这个错误 :

php - mysql:查找指定时间段内的记录组

linux - linux下使用一条命令,100个并发进程失败,linux下如何解决这个问题?

python2.6.6 将apache日志时间戳转换为纪元以来的秒数(unix风格)

python - 找不到名为 os 的模块——Django、mod_wsgi、Apache 2.2

javascript - 使用 jquery 向非 native 服务器发送授权 header 时出错