автоматическое перенаправление на чистые URL-адреса

как я могу автоматически перенаправить сайт с грязного URL-адреса, чтобы очистить URL-адрес в php, что-то вроде

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 

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-адреса.

И также очень важно показать 404 вместо перенаправления в случае неправильного URL.

Если вы используете Apache, вы можете использовать модуль mod_rewrite и устанавливать правила в файле .htaccess в папках httpdocs или в веб-корне. Я не вижу причин, чтобы вызвать процесс 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']); 

вы должны проверить, установлены ли значения перед попыткой перенаправления