2017-02-19 20 views
0

У меня есть PHP-файл, который принимает параметр для печати страницы, как это:Как написать RewriteRule пройти только последнюю часть пути

build.php?parameter=print-this-article 

и что я хочу, чтобы создать RewriteRule с .htaccess, что позволяет мне не послать самую последнюю часть в этот PHP файл, независимо от уровня, например:

www.mysite.com/article/level-1/level-2/level-3 

Таким образом, в этом случае build.php получит параметр level-3.

Но если пользователь следующий URI:

www.mysite.com/article/level-1/level-2 

Это будет выглядеть так:

build.php?parameter=level-2 

И точно так же с level-1 ...

Есть ли решение для этого ?

+0

Попытка лучше объяснить предмет – Stratboy

ответ

0

Чтобы получить уровень, вы должны захватить часть запроса URI. Чтобы убедиться, что это последняя часть, она не должна содержать никаких косых черт. Это признано этого регулярного выражение

RewriteRule ([^/]+)$ build.php?parameter=$1 [L] 

Важная частью является [^/], которая является character class[...], состоящий из ничего not^ косой черты /.

0

Я исследовал больше и закончил смешивание PHP и RewriteRule.

На .htaccess я писал:

# this sends the whole part of the URI that is after the 'article/' 
RewriteRule ^article/(.+)$ build.php?parameter=$1 [L] 

Так что, если URI является www.mysite.com/article/level-1/level-2 РНР файл build.php получит эту строку level-1/level-2.

И в build.php я добавил эту функцию:

function get_last_parameter($link) 
    { 
     // to split the string right on the '/' 
     $parts = explode("/", $link); 
     // to remove empty elements, this helps in case a URI ended with '/' is received 
     $parts = array_diff($parts, array('')); 
     // take the final element of the array and remove any string that starts with '#', so it won't be confused with sections 
     $final_array = explode("#", end($parts)); 
     // the result is an array of two (or more elements) so send the first one (of this array) 
     $parameter = reset($final_array); 
     return $parameter; 
    } 
// ... and wrote the query to select from the database the article 

Преимущество этого метода заключается в том, что я могу использовать все «уровни» на URI в то же время, потому что у меня будет полный массив ,

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

  • Нет связанных вопросов^_^