как я могу автоматически перенаправить сайт с грязного 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']);
вы должны проверить, установлены ли значения перед попыткой перенаправления