我如何自动将站点从脏 url 重定向到 php 中的干净 url,例如
http://www.mysite.com?page=page1&action=action1
到
http://www.mysite.com/page1/action1
我如何自动将站点从脏 url 重定向到 php 中的干净 url,例如
http://www.mysite.com?page=page1&action=action1
到
http://www.mysite.com/page1/action1
您必须检查它是否是干净的请求。否则会陷入死循环
这是我的一个项目中的一个示例:
.htaccess
RewriteEngine On
RewriteRule ^game/([0-9]+)/ /game.php?newid=$1
游戏.php
if (isset($_GET['id'])) {
$row = dbgetrow("SELECT * FROM games WHERE id = %s",$_GET['id']);
if ($row) {
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: /game/".$row['id']."/".seo_title($row['name']));
} else {
Header( "HTTP/1.1 404 Not found" );
}
exit;
}
if (isset($_GET['newid'])) $_GET['id'] = $_GET['newid'];
因此,您必须验证它是直接“脏”调用还是重写。
然后仅在前一个时重定向。
您也需要一些代码来构建干净的 url。
如果 url 错误,显示 404 而不是重定向也很重要。
如果您正在运行 Apache,您可以使用 mod_rewrite 模块并在 httpdocs 文件夹或 Web 根目录中的 .htaccess 文件中设置规则。当较低级别的组件做得更好时,我看不出有任何理由调用 PHP 进程进行重定向。
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/page\.php$
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^(.*)$ http://mydomain.site/page/%1.pdf [R=302,L]
尝试
header("Location: http://www.mysite.com/".$_GET['page']."/".$_GET['action']);
您应该在尝试重定向之前检查是否设置了值