2015-12-21 2 views
0

Я искал другие решения для перезаписи URL-адреса с использованием файла .htaccess в корневом каталоге моего сервера, но язык мне очень запутан, и я не могу заставить его работать. Как будет идти об изменении:Переписать строку запроса PHP?

http://domain.com/share.php?media=059ogbuq70 

к:

http://domain.com/059ogbuq70 

Я нашел код, подобный этому, и попытался это, но это не похоже на работу:

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^media=([0-9]+)$ 
RewriteRule ^$ share.php?media=$1 [QSA,L] 

Мой PHP:

<?php 
$media_id = $_GET['media']; 
$url = file_get_contents("https://api.wistia.com/v1/medias/" . $media_id . ".json?api_password=my_key"); 
$json = json_decode($url, true); 
$name = $json[name]; 
$origimg = $json['thumbnail'][url]; 
list($image, $size) = explode('?', $origimg); 
$video = $json['assets'][5][url]; 
?> 

I then echo переменные, в которых они мне нужны на моей странице.

Спасибо!

+0

Я смущен. Вы переписываете URL-адрес для включения строки запроса, но только если строка запроса существует. Вы хотите перенаправить с первого на второй URL? – showdev

+0

В основном я хочу, чтобы довольно URL-адрес показывался только пользователю, а реальный URL-адрес - это то, что используется сервером/php. – user1661677

+0

Вы также хотите перенаправить «уродливые» URL-адреса соответствующим «симпатичным»? – showdev

ответ

1

Чтобы внутренне переписать «довольно» URL, так что строки запроса передаются в PHP, я рекомендую следующий .htaccess файл:

RewriteEngine on 
RewriteRule ^([^/]+)/?$ share.php?media=$1 [L] 

регулярное выражение спичек:
один или несколько символов, которые не обратной косой черты, после чего следует обратная косая черта.

Все, кроме необязательной конечной косой черты, записываются в $1 и переписываются как переменная строки запроса "media".

Например:

http://domain.com/059ogbuq70/
переписывает внутренне
http://domain.com/share.php?media=059ogbuq70

Это означает, что:

$_GET['media'] = 059ogbuq70


Вы могли бы найти это mod_rewrite cheat sheet полезно для создания вашего регулярного выражения.
Кроме того, вы можете test your rewrites здесь.

+0

Спасибо за ваш ответ, но этот не переписывается URL, и это мешает моему PHP (получение переменной из URI param 'media ='). – user1661677

+0

Возможно, что-то происходит, или я не понимаю, к чему вы стремитесь. Переписывание является внутренним, поэтому вы не увидите изменение URL-адреса в браузере (перенаправление). Кажется, он работает [здесь] (http://htaccess.mwl.be/). Это может помочь изменить ваш PHP-код на ваш вопрос. – showdev

+0

Я исправляю, вводя URL-адрес: 'domain.com/ [some-string]', похоже, работает нормально, но у меня возникла проблема с вызовом переменной $ $ для моей строки в строке 3 моего PHP. Он работал отлично до перезаписи URL-адреса, и он работает, если я удаляю '.htaccess' – user1661677

0

Вам нужны two правила того, что вы пытаетесь сделать. Вы можете поместить это в файл под названием .htaccess

RewriteEngine on 

#redirect all old URLs to the new rewritten URL 
RewriteCond %{THE_REQUEST} ^GET\ /+share\.php\?media=([^&\ ]+) 
RewriteRule^/%1? [R=302,L] 

#rewrite folder path internally to share.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/?$ share.php?media=$1 [QSA,L] 
+0

Спасибо за ваш ответ, но этот перенаправляется на: 'http: // vipheo.com/fs6e/vipheo/public/83s371n1yi% 20HTTP/1.0' и дает мне 404. Любая помощь? – user1661677

+0

@ user1661677 да простите, я исправил правило. Небольшая ошибка. Теперь все правило закончено. Если у вас нет такого правила, пользователи все равно смогут использовать URL-адрес 'http: //example.com/share.php? Media = 13e43'. –

Смежные вопросы