Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 自动重定向到清除URL_Php_Clean Urls - Fatal编程技术网

Php 自动重定向到清除URL

Php 自动重定向到清除URL,php,clean-urls,Php,Clean Urls,在php中,如何将站点从脏url自动重定向到干净url,如 http://www.mysite.com?page=page1&action=action1 到 试一试 在尝试重定向之前,您应该检查是否设置了这些值。如果您正在运行Apache,则可以使用mod_rewrite模块并在httpdocs文件夹或web根目录中的.htaccess文件中设置规则。我看不出有任何理由在较低级别的组件可以做得更好时调用PHP进程来进行重定向 : 你必须检查它是否干净。 否则,您将陷入无限循环 以下是

在php中,如何将站点从脏url自动重定向到干净url,如

http://www.mysite.com?page=page1&action=action1

试一试


在尝试重定向之前,您应该检查是否设置了这些值。如果您正在运行Apache,则可以使用mod_rewrite模块并在httpdocs文件夹或web根目录中的.htaccess文件中设置规则。我看不出有任何理由在较低级别的组件可以做得更好时调用PHP进程来进行重定向

:


你必须检查它是否干净。 否则,您将陷入无限循环

以下是我的一个项目的示例:

.htaccess

RewriteEngine On
RewriteRule ^game/([0-9]+)/ /game.php?newid=$1
game.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而不是重定向也是非常重要的。

我建议您为这样的链接提供一个错误,以确保规范使用。这也有助于防止黑客试图破坏你的网站!这真的是你想要的吗?不是反过来吗?谢谢大家。但我想要的只是在我的网页中使用干净的url机制(用于SEO),更重要的是,它是一个单条目页面,所以没有文件夹可以重定向我的页面。你们能告诉我什么是最好的主意吗?我想他是在要求一个phpsolution@Fender我看不出有任何理由调用PHP进程来进行重定向,因为较低级别的组件可以做得更好。没错,我也不会用PHP来做重定向,但他在问题中提到了这一点。但你的解决方案很好,我认为这根本不是答案。一个人可以回答任何问题,所以这个蹩脚的方式是不可接受的,不。但是它并没有特别的帮助,我同意。正确的标题回答非常值得一提。
RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/page\.php$
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^(.*)$ http://mydomain.site/page/%1.pdf [R=302,L]
RewriteEngine On
RewriteRule ^game/([0-9]+)/ /game.php?newid=$1
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'];